python爬虫抓取翻页内容

一帘幽梦a 发布于 2016/12/15 16:06
阅读 3K+
收藏 0

qiushibaike 如何写抓取翻页的内容,这里只写好了一个抓取本页的内容 

#coding=utf-8


import urllib2
import urllib
import re


page = 1
url = 'http://www.qiushibaike.com/hot/page/'+str(page)
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }




try:
request = urllib2.Request(url,headers=headers)
response = urllib2.urlopen(request)
content = response.read()
pattern = re.compile('<div class="author clearfix">.*?href.*?<img src.*?title=.*?<h2>(.*?)</h2>.*?<div class="content">(.*?)</div>.*?<i class="number">(.*?)</i>',re.S)
items = re.findall(pattern,content)
for item in items:
print item[0],item[1],item[2]




except urllib2.URLError,e:
if hasattr(e,"code"):
print e.code
if hasattr(e,'reason'):
print e.reason

加载中
0
cys1357
cys1357
#coding=utf-8


import urllib2
import urllib
import re


page = 1
while(page<5):
    url = 'http://www.qiushibaike.com/hot/page/'+str(page)
    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    headers = { 'User-Agent' : user_agent }




    try:
        request = urllib2.Request(url,headers=headers)
        response = urllib2.urlopen(request)
        content = response.read()
        pattern = re.compile('<div class="author clearfix">.*?href.*?<img src.*?title=.*?<h2>(.*?)</h2>.*?<div class="content">(.*?)</div>.*?<i class="number">(.*?)</i>',re.S)
        items = re.findall(pattern,content)
        for item in items:
            print item[0],item[1],item[2]
    except urllib2.URLError,e:
        if hasattr(e,"code"):
            print e.code
        if hasattr(e,'reason'):
            print e.reason

    page=page+1

好像可以抓取

0
Feng_Yu
Feng_Yu
写个递归算法不就行了?递归抓取就行了啊
0
一碗粥
一碗粥

如果只是为了抓取内容, 建议还是用框架.

比如scrapy.

0
一帘幽梦a
一帘幽梦a
框架不会写啊 ,我现在就是想实现翻页的这个功能
0
cys1357
cys1357
试了一下http://www.qiushibaike.com/hot/page/x返回的是第x页的内容,那么循环你的代码,每次page+1,应该就可以抓取所有页面了
赵震宇
赵震宇
你说的很对
0
一帘幽梦a
一帘幽梦a
page = 1
while page<5:
url = 'http://www.qiushibaike.com/hot/page/'+str(page+1)
page=page+1
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

headers = { 'User-Agent' : user_agent }

我加了个循环但是还是不行,无法抓取


0
cys1357
cys1357
有时会抓不到,502错误,在循环里加上time.sleep(1)隔1秒抓一次好像没再出现
0
一帘幽梦a
一帘幽梦a
可以了 非常感谢 ,原来是 处理异常的缩进问题造成无法抓取的。。
返回顶部
顶部