1 / 80
文档名称:

Python爬虫实战.docx

格式:docx   大小:5,521KB   页数:80页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Python爬虫实战.docx

上传人:碎碎念的折木 2022/6/13 文件大小:5.39 MB

下载得到文件列表

Python爬虫实战.docx

文档介绍

文档介绍:Python 爬虫实战
Python 爬虫实战(1):爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧。那么这次为大家带来,Python 爬取糗事百科的小段子的例子。
首先础上追加如下代码
content =().decode('utf-8')
1 pattern =('<div.*?class="author.*?>.*?<a.*?</a>.*?<a.*?>(.*?)</a>.*?<di
2 '="content".*?title="(.*?)">(.*?)</div>
class="stats.*?class="number">(.*?)</i>',)
items =(pattern,content)
foritem initems:
printitem[0],item[1],item[2],item[3],item[4]
现在正则表达式在这里稍作说明
1).*? 是一个固定的搭配,.和*代表可以匹配任意无限多个字符,加上?表示使用非贪婪模式进行匹配,也就是我们会尽可能短地做匹配,以后我们还会大量用到 .*? 的搭配。
2)(.*?)代表一个分组,在这个正则表达式中我们匹配了五个分组,在后面的遍历 item 中, item[0]就代表第一个(.*?)所指代的内容,item[1]就代表第二个(.*?)所指代的内容,以此类推。
3) 标志代表在匹配时为点任意匹配模式,点 . 也可以代表换行符。现在我们可以看一下部分运行结果
儒雅男神 2015-02-17 14:34:42
小时候一个一个拆着放的举个爪…
<div class=”thumb”>
<a href=”/article/100705418?list=hot&s=4747301″ target=”_blank” onclick=”([„_trackEvent‟, „post‟, „click‟, „signlePost‟])”>
<imgsrc=”
”alt=”糗事#100705418″ />
</a>
</div>
7093
奇怪的名字啊2015-02-17 14:49:16
回家的路,你追我赶,回家的心情和窗外的阳光一样灿烂。一路向前,离亲人越来越近了。哪里有爸妈哪里才是家,希望所有糗友的爸爸妈妈都身体健…康….
4803
这是其中的两个段子,分别打印了发布人,发布时间,发布内容,附加图片以及点赞数。
其中,附加图片的内容我把图片代码整体抠了出来,这个对应item[3],所以我们只需要进一步判断 item[3]里面是否含有 img 这个字样就可以进行过滤了。
好,我们再把上述代码中的 for 循环改为下面的样子
foritem initems:
2
3
4

haveImg =("img",item[3]) ifnothaveImg:
printitem[0],item[1],item[2],item[4]
现在,整体的代码如下
1 # -*- coding:utf-8 -*-
importurllib
importurllib2
importre
5
page =1
url ='/'+str(page)
user_agent ='Mozilla/ (compatible; MSIE ; Windows NT)'
headers ={ 'User-Agent': user_agent }
try:
request =(url,headers =headers)
response =(request)
content =().decode('utf-8')
14 pattern =('<div.*?class="author.*?>.*?<a.*?</a>.*?<a.*?>(.*?)<
15
class="stats.*?class="number">(.*?)</i>',)
items =(pattern,content)
fori