首页 编程教程正文

python爬虫,爬取58同城数据

piaodoo 编程教程 2020-02-22 22:15:02 1701 0 python教程

本文来源吾爱破解论坛

本帖最后由 牵手丶若相惜 于 2019-11-27 19:32 编辑

仅限学习!仅限学习!!仅限学习!!!
为了爬虫不影响别人的服务器  我每爬取一页等待了3秒 这是必要的
评分!!!评分!!!评分!!!谢谢嗨学网
——————————————————————
有个帖子 被人说发现了错误 才发现【i】会被转义
发帖有的地方被转义成了字体   divs1【i】

现在我把divs1【i】改成了divs1[x]
(只能用中文的中括号 来告诉你们那里错了 不然还会被转义)
——————————————————————
没什么反爬机制 比较简单
爬取的是58同城的小时工的数据,因为小时工的数据比较多
我就爬取了70页,具体小时工的数据多少页不知道
虽然上面只显示了70页,但是你可以通过在地址上添加页数来超过70页 具体的看下面的图片
数据重不重复我不知道,因为每次刷新数据都不同
一定要在headers里面添加上referer 不然爬几页过后,后面的都是空的 不知道是反爬机制 还是正则表达式的问题
具体的没实验 因为我最开始用的是正则来匹配的数据 后面发现太乱,而且有空数据 又改为BeautifulSoup来匹配的
在Title_get函数里有一句判断字符是否是广告,原因在图里
异常处理你加不加都可以 但是我第二次爬取的时候 报了一个异常 但是后面没再报 想想还是加上


代码如下
import requests
import time
from bs4 import BeautifulSoup

# 浏览器代{过}{滤}理
headers = {
    "user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36",
    "referer": "https://sz.58.com/job/pn1/?key=%E5%B0%8F%E6%97%B6%E5%B7%A5&cmcskey=%E5%B0%8F%E6%97%B6%E5%B7%A5&final=1&jump=1&specialtype=gls&classpolicy=main_A,job_A&ClickID=1"
}

# 网页后缀
parameters = {
    "key": "%E5%B0%8F%E6%97%B6%E5%B7%A5",
    "cmcskey": "%E5%B0%8F%E6%97%B6%E5%B7%A5",
    "final": "1",
    "jump": "1",
    "specialtype": "gls",
    "classpolicy": "main_A,job_A",
    "ClickID": "1"
}
# 筛选内容
def Title_get(li):
    divs1 = list(li.find("div", class_="item_con job_title").stripped_strings)
    with open("d:/58小时工.txt","a") as fp:
        fp.write(("标题:"+divs1[0]+divs1[1]+divs1[2]+"\t"))
        fp.write(("工资:"+divs1[3]+divs1[4]+"\t"))
        fp.write("待遇:")
        for x in range(5,len(divs1)):
            # 判断字符串里是否有"广告"
            if divs1[x] != "广告":
                fp.write(divs1[x]+",")
        fp.write("\n")

if __name__ == '__main__':
    # 页码
    for i in range(1,71):
        if i >=2:
            headers["referer"] = "https://sz.58.com/job/pn"+str(i-1)+"/?key=%E5%B0%8F%E6%97%B6%E5%B7%A5&cmcskey=%E5%B0%8F%E6%97%B6%E5%B7%A5&final=1&jump=1&specialtype=gls&classpolicy=main_A,job_A&ClickID=1"
        # 异常处理
        try:
            data = requests.get("https://sz.58.com/job/pn1" , headers=headers, params=parameters).text
            soup = BeautifulSoup(data, "html5lib")
            lis = soup.find_all("li",class_="job_item clearfix")
            for li in lis:
                Title_get(li)
            # 每爬取一页 等待3秒
            time.sleep(3)
        except:
            
continue


捕获.PNG (241.81 KB, 下载次数: 7)

下载附件  保存到相册

2019-11-24 15:14 上传

爬取的数据

爬取的数据

捕获1.PNG (102.62 KB, 下载次数: 2)

下载附件  保存到相册

2019-11-24 14:37 上传

页数

页数

捕获2.PNG (43.37 KB, 下载次数: 1)

下载附件  保存到相册

2019-11-24 14:43 上传

这就是为什么把判断广告的原因

这就是为什么把判断广告的原因

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7955.html

搜索