爬虫流程

1.准备请求URL地址。

URL= ‘https://www.qiushibaike.com/hot/page/1’

#如果不加请求头,默认情况下user-Agent是python开头的,对方会采取反爬虫措施。

headers={

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'
}

2.构建请求对象

req=request.Request(url=url,headers=headers)

3.发送请求,获取源代码

response = request.urlopen(req)             # 发送请求,接收响应

4.读取返回的数据,转换为字符串类型

HTML= response.read().decode('utf-8', 'ignore')

5.准备正则

pattern= re.compile(r'<h2>(.*?)</h2>.*?<div class="article".*?>(.*?)</div>.*?<div class="content.*?span>(.*?)</span>,re.S")

6.使用findall()函数 查找所有用户

res = re.findall(pattern,html)

for   r  in   res:

        author = r[0].strip('\n')

        content =r[2].strip('\n')             #  去除两边的空格

br_pat=re.compile( r'<br/><br/>|<br/>|<br>',re.S)

# 1.正则表达式  2.替换后的字符  3.要进行替换的字符串  4.替换的次数。

content =re.sub(br_pat; '\n', content)

print(author)

print(content)

# 下一页标签,# 找到ul标签包裹的所有标签。

next_pat = re.compile(r'<ul class="pagination".*?</ul>', re.S)

rs =re.search(next_pat, html)

# 获取ul包裹的标签代码

ul_html =rs.group()

# 再次使用正则从ul包裹的标签页代码中提取所有的链接

link_pat = re.compile(r'<li.*?a href="(.*?)"',re.S>)

a_links = re.findall(link_pat,ul_html)

# 取出下一页链接

next_link = a_links[-1]

# 判断链接地址是否包含page字符,若包含则有下一页,若不包含则没有下一页

if   'page'   in   next _link:

       print('有下一页,下一页的地址为:{}.format(next_link)')

       # 拼接一个完整的url地址

       url = 'https://www.qiushibaike.com'+next_link

else:

       print(“没有下一页,数据爬去完毕!”)

       break

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值