python网络爬虫——爬取嗅事百科

网络爬虫 - 爬取嗅事百科

爬取过程分三大步:
一,请求,获取网页源码
url为:url =' https :
//www.qiushibaike.com/8hr/page/'+ str(page)先构造请求,这里要加入UA(用户代理)字段,模仿浏览器请求,躲开反爬虫策略,代码如下:

def get_html(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'}
    req = urllib.request.Request(url,headers=headers)
    response = urllib.request.urlopen(req)
    html = response.read().decode('utf-8')
    return html

二,|网页解析源码
我们要的电子杂志的英文嗅事百科里的段子提取出作者状语从句:段子内容,可以打开浏览器,快捷键:F12源码查看这里写图片描述
我们观察会发现 <span>和</span> 之间,作者同理就在<h2></h2>之中中之中,因此,正则表达式可以这样写
'<h2>(.*?)</h2>.*?<div class="content.*?<span>(.*?)</span>'
获取名字和内容可以通过索引,打印出来我们发现里面有很多\ n,所以这里采用最简单的办法就是把所有的换行符都替换掉,然后在后面重新加可以控制的换行符:

name = str(team[0]).replace('\n', '')+':\n'
text = str(team[1]).replace('\n', n '

三,内容保存
保存内容的时候,我们会发现里面有很多
换行标签,但在文档看起来很不舒服,所以就要想办法吧他替换掉,这是sub()方法:

全部代码如下:

import urllib.request
import urllib.parse
import re
import time

def get_html(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'}
    req = urllib.request.Request(url,headers=headers)
    response = urllib.request.urlopen(req)
    html = response.read().decode('utf-8')
    return html

def analysis_content(html):
    a = re.compile('<h2>(.*?)</h2>.*?<div class="content.*?<span>(.*?)</span>',re.S)
    content = a.findall(html)
    for team in content:
        name = str(team[0]).replace('\n', '')+':\n'
        text = str(team[1]).replace('\n', '')+'\n\n'
        if '<br/>' in text:
            new_i = re.sub('<br/>','\n',text)
        else:
            new_i = text
        with open('XiuShiBaiKe.txt','a',encoding='utf-8') as f:
            f.write(name+new_i)
            print(name+new_i)

def main(page):
    url = 'https://www.qiushibaike.com/8hr/page/'+str(page)
    print(url)
    html = get_html(url)
    analysis_content(html)

if __name__ == '__main__':
    for p in range(1,14):
        page = p
        print(page)
        main(page)
        time.sleep(1)

初自学爬虫,请多多指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值