python 爬取糗百

Python爬虫爬取糗百

1、构造请求,查看爬取的URL,因为糗百的内容有可能有多页,并且内容很多,所以在爬取的时候选择只爬取文正的ID以及内容

2、构造爬取过程中的正则表达式,筛选出所需内容(根据网页源代码)

3、对爬取内容进行输出展示

#!/usr/bin/env python
#coding=utf-8
import  urllib2
import  urllib
import  re
import  time
from urllib2 import  HTTPError
def getdata(url):
    user_agent =
'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/56.0.2924.87 Safari/537.36'
   
headers= {'User-Agent':user_agent}
    request = urllib2.Request(
url=url,headers=headers)
    response = urllib2.urlopen(request)
    content = response.read()
    pattern = re.compile(
'<ahref="/article/(\d+)"\s+target.*?contentHerf.*?<span>(.*?)</span>',re.S)
    result = re.findall(pattern
,content)
   
returnresult
if __name__ == '__main__':
    start_page =
1
   
end_page= 35
   
fori inrange(start_page,end_page):
        url =
'http://www.qiushibaike.com/8hr/page/'+str(i)+'/?s=4969805'
       
res= getdata(url)
       
ifres == None:
           
print'no result return'
       
else:
           
forline inres:
               
print line[0],line[1].replace('<br/>','')
        time.sleep(
1)
 

 

 

查看网页的源代码如下

<a href="/article/118806702"target="_blank" class='contentHerf' >

<div class="content">

 

 

 

<span>巨招财的石头,左下角发发发发</span>

 

 

</div>

</a>

根据文本内容构造了如下的正则

re.compile('<ahref="/article/(\d+)"\s+target.*?contentHerf.*?<span>(.*?)</span>',re.S)

re.S表示的是在普通的正则中(.)这个符号不能代表换行符,利用这个模式之后,换行符同样能用(.)来表示单个字符(.符号用括号括起来,防止看不清楚)

之后就可以对文本进行输出处理了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值