吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2742|回复: 16
收起左侧

[Python 原创] 小白刚学习python爬虫,分享一下代码,正则爬取糗百。

[复制链接]
来两碗米饭 发表于 2019-8-26 20:40
本帖最后由 3651535042 于 2019-8-26 20:54 编辑

有免费评分的。给下评分谢谢。攒点吾爱币去换教程!



今天学习的是正则,所以就用正则爬取了一下糗事百科。
在保存为json文件

(第一次用正则,写的不好勿喷)。



用到的库,re(正则),requests(解析),json(保存json用的)


[Python] 纯文本查看 复制代码
import re
import requests
from requests.exceptions import ConnectionError
import json

headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}

#get网站通用框架
def get_url(url):
    try:
        r=requests.get(url,headers=headers)
        r.encoding='utf-8'
        html=r.text
        return html
        # return r.content.decode()
    except ConnectionError as e:
        print('采集错误%d'%e)

def re_html(html):
    contents=[]
    #正则表示,获取内容
    content=re.findall(r'<div class="cont.*?<span>(.*?)</span>.*?</div>',html,re.S)
    #获取昵称
    name=re.findall(r'<h2>(.*?)</h2>',html,re.S)
    for i in content:
        #把正文的<br/>标签替换成空,并添加到列表里
        contents.append(i.replace('<br/>',''))
    for a in range(len(name)):
        data = {
            'name':name[a],
            'content':contents[a]
        }
        datas = json.dumps(data,indent=4,ensure_ascii=False)
        print(datas)
        with open('糗事百科.json','a',encoding='utf8') as f:
            f.write(datas)

def main():
    for i in range(1,36):
        #循环糗百每一页的网址
        print('第%s页'%i)
        url='https://www.qiushibaike.com/textnew/page/%s/?s=5222421'%i
        data=get_url(url=url)
        re_html(html=data)

if __name__ == '__main__':
    main()



有哪里不懂的可以评论区问我。
微信图片_20190826205402.png
不出意外的话,每天都会发一篇。

明天发斗图啦爬虫。



免费评分

参与人数 3吾爱币 +5 热心值 +1 收起 理由
yes00101 + 1 热心回复!
YT-Lucy + 1 用心讨论,共获提升!
苏紫方璇 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

prty 发表于 2019-8-26 22:05
3651535042 发表于 2019-8-26 20:55
return r.content.decode() 这个可以代替那个r.encoding='utf-8' 但是不知道为什么到20页左右就会报错,就 ...

或许是r.content为空 空字符不能解码 ,,,
896749057 发表于 2019-8-26 23:49
3651535042 发表于 2019-8-26 20:55
return r.content.decode() 这个可以代替那个r.encoding='utf-8' 但是不知道为什么到20页左右就会报错,就 ...

老哥看下私信
头像被屏蔽
sy727272 发表于 2019-8-26 20:49
 楼主| 来两碗米饭 发表于 2019-8-26 20:55
return r.content.decode() 这个可以代替那个r.encoding='utf-8' 但是不知道为什么到20页左右就会报错,就换成了r.encoding='utf-8'
有梦想人不睡觉 发表于 2019-8-26 21:02
有没有好的教程能分享下吗
秋田犬 发表于 2019-8-26 21:07
楼上+111111111
 楼主| 来两碗米饭 发表于 2019-8-26 21:10
有梦想人不睡觉 发表于 2019-8-26 21:02
有没有好的教程能分享下吗

我自己都没找到,都准备去某宝买了 - -
 楼主| 来两碗米饭 发表于 2019-8-26 21:11

我自己都没找到,都准备去某宝买了 - -
ArgentumPC 发表于 2019-8-26 21:14
用的PYTHON几啊?
a1142099496 发表于 2019-8-26 21:16
怎么入门啊
 楼主| 来两碗米饭 发表于 2019-8-26 21:17

python3.7
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 13:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表