一页有50条数据一共2000页 分页是get分页

#!/usr/bin/python
# encoding: utf-8
import requests
import threading
from lxml import etree
import sys
import os
import datetime
import re
import random
import time reload(sys) sys.setdefaultencoding('utf-8') # 定义写入日志的方法
def log(context):
txtName = "./log/log.txt"
f=file(txtName, "a+") f.writelines(context+"\n") f.close() def xin():
# 请求头
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9'
} count=1
# 一共2000页
while (count < 2000):
url="https://search.51job.com/list/000000,000000,0000,00,9,99,java,2,"+str(count)+".html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=" response=requests.get(url,headers=header)
html=response.content.decode("gbk")
print(html)
selector=etree.HTML(html)
contents = selector.xpath('//div[@class="dw_table"]/div[@class="el"]') log("第"+str(count)+"页了--"+str(len(contents))+"条数据")
for eachlink in contents: company = eachlink.xpath('span[@class="t2"]/a/text()')[0]
url= eachlink.xpath('p/span/a/@href')[0]
name= eachlink.xpath('p/span/a/text()')[0]
city= eachlink.xpath('span[@class="t3"]/text()')[0] # 工资有的是没有的
key=""
if len(eachlink.xpath('span[@class="t4"]/text()'))<1:
key=""
else:
key= eachlink.xpath('span[@class="t4"]/text()')[0] # 把空格去掉
company=company.replace(' ','')
name=name.replace(' ','')
city=city.replace(' ','') zhi=name+"============="+company+"============="+city+"============="+str(key)+"============="+url txtName = "./file/java.txt"
f=file(txtName, "a+")
f.write(zhi)
f.close() sui=random.randint(1,5)
log("休眠"+str(sui))
time.sleep(sui)
count=count+1 if __name__=="__main__":
xin()

日志文件

爬去的数据

但是爬去的速度有点慢,

于是乎采用了多线程爬去,

但是51job 立刻就把IP段给封掉了,

于是用户4台服务器,每台爬取500条数据,最后再结合一起加到数据库中

人生苦短,我用Python!!!

最新文章

  1. __thread关键字[转]
  2. C#类的一些概念
  3. Unity3D 2D游戏中寻径算法的一些解决思路
  4. Python学习总结12:sys模块
  5. servlet学习笔记四
  6. IDG合伙人李丰:O2O中的C2C蕴藏巨大商机
  7. QQ拼音还是不行哇
  8. STL源代码分析--迭代摘要、迭代器失效汇总
  9. 【百度地图API】如何利用地图API制作汽车沿道路行驶的动画?——如何获得道路层数据
  10. 【noi openjudge题解】最低通行费
  11. 自动化测试selenium(四)check,选中复选框,操作一组元素
  12. port bridge enable命令导致的环路
  13. python文件管理小计
  14. WPF中定时器Timer与DispatcherTimer的用法
  15. django 数据库配置 ,APP 迁移.模型基础
  16. Python3函数式编程
  17. 复习回顾(String,StringBuffer,Arrays方法总结)
  18. The Best Path HDU - 5883(欧拉回路 &amp;&amp; 欧拉路径)
  19. Python + Djang+ Visual Studio Code(VSCode)
  20. [翻译] PPDragDropBadgeView

热门文章

  1. jasmine 使用
  2. centos6 查看SELinux状态 关闭SELinux
  3. Spring Boot 入门之持久层篇(三)
  4. 【转载】细粒度图像识别Object-Part Attention Driven Discriminative Localization for Fine-grained Image Classification
  5. 杂项:HTML5-1/3-发展历程
  6. Java Web不能不懂的知识
  7. 03:TPCC 基准压测my.cnf
  8. c++ 搜索二叉树 插入,删除,遍历操作
  9. android流畅度比Ios差的原因
  10. angualr 之 $$phase