Python基础学习之糗事百科爬虫
2019-03-12 22:49
453 查看
思路如下:
(1)分析各页间的网址规律,通过for循环实现多页内容的爬取
(2)构建一个函数,用来获取用户和内容
注意:
程序中用到了exec()函数,exec()函数就是执行储存在字符串或文件中的Python语句。在通过for循环中遍历段子内容分别赋值给对应遍历,变量名是有规律的,格式为:content+顺序号
程序
import urllib.request import re def getcontent(url,page): headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36") opener = urllib.request.build_opener() opener.addheaders = [headers] urllib.request.install_opener(opener) data = urllib.request.urlopen(url).read().decode("utf-8") # .*? 是一个固定的搭配,.和*代表可以匹配任意无限多个字符,加上?表示使用非贪婪模式进行匹配 # (.*?)代表一个分组 userpat = '<div class="author clearfix">.*?<img src=".*?" alt="(.*?)">' # userpat = '<div class="author clearfix">.*?<h2>(.*?)</h2>' contentpat = '<div class="content">.*?<span>(.*?)</span>' # re.S匹配任意符号,包括换行符 userlist = re.compile(userpat,re.S).findall(data) contentlist = re.compile(contentpat,re.S).findall(data) x = 1 # 通过for循环遍及内容分别赋给对应的变量 for content in contentlist: content = content.replace("\n","") name = "content"+str(x) # 通过exec()函数实现用字符串作为变量名并赋值 exec(name+'=content') x += 1 # 下面调试两个输出结果显示的结果是一样的 # print(content) # exec("print("+name+")") y = 1 for user in userlist: name = "content" + str(y) print("用户"+str(page)+str(y)+"是:"+user) print("内容是:") exec("print("+name+")") print("\n") y += 1 for i in range(1,4): url = "https://www.qiushibaike.com/text/page/"+str(i) getcontent(url,i)
输出结果显示:
以上是还存在不足,后期再更改。
相关文章推荐
- 关于Python学习1--爬虫基础
- 零基础写python爬虫之抓取糗事百科代码分享
- Python爬虫学习1--糗事百科
- python3 [入门基础实战] 爬虫入门之智联招聘的学习(一)
- Python实现网络爬虫基础学习(四)
- Python基础学习-爬虫入门知识
- Python爬虫基础学习,从一个小案例来学习xpath匹配方法
- python3 [入门基础实战] 爬虫入门之智联招聘的学习(一)
- Python爬虫入门学习例子之糗事百科
- python学习笔记(3)--爬虫基础教程1
- python爬虫小练习之三:requests库小练习(糗事百科最最最基础)
- 零基础学习python_爬虫(53课)
- 学习小记 - Python爬虫 (1) 静态网页糗事百科的爬取
- Python学习笔记(八)爬虫基础(正则和编解码)
- python学习(十六)写爬虫爬取糗事百科段子
- python爬虫基础学习-01
- Python爬虫学习笔记之基础知识
- Python学习之爬虫07-糗事百科段子爬取
- python基础学习-7(简单爬虫)
- python3 [入门基础实战] 爬虫入门之xpath的学习