来两碗米饭 发表于 2019-8-26 20:40

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

本帖最后由 3651535042 于 2019-8-26 20:54 编辑

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



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

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



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


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,
            'content':contents
      }
      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()


有哪里不懂的可以评论区问我。

不出意外的话,每天都会发一篇。
明天发斗图啦爬虫。



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

秋田犬 发表于 2019-8-26 21:07
楼上+111111111

我自己都没找到,都准备去某宝买了 - -

ArgentumPC 发表于 2019-8-26 21:14

用的PYTHON几啊?

a1142099496 发表于 2019-8-26 21:16

怎么入门啊{:1_908:}

来两碗米饭 发表于 2019-8-26 21:17

ArgentumPC 发表于 2019-8-26 21:14
用的PYTHON几啊?

python3.7
页: [1] 2
查看完整版本: 小白刚学习python爬虫,分享一下代码,正则爬取糗百。