免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6210 | 回复: 1
打印 上一主题 下一主题

Python爬虫从网页中通过Next连接到下一页 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-10 11:31 |只看该作者 |倒序浏览
大家好,
我想在下面的网页中进行爬虫获得信息,在该页面中的Next连接到下一页,但是我不知道怎么让爬虫能自动有Next连接到下一页,请大家指点下,先谢谢大家了

http://www.ncbi.nlm.nih.gov/pubmed/?term=RNA-seq

网页中Next的html代码见下图


下面是我爬虫代码

#!python
import sys
import mechanize
from bs4 import BeautifulSoup
import re

#brower
br=mechanize.Browser()

#options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

#follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

#debugging?
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)

#user-agent(This is a cheating.)
br.addheaders=[('User-agent','Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1 ')]

#get the e-mail address
r=br.open('http://www.ncbi.nlm.nih.gov/pubmed/?term=RNA-seq')
html=r.read()  # html is a str type
list_paperid=re.findall(r'<div class="rslt"><p class="title"><a href="/pubmed/(\d+)"',html)
list=[]
for i in list_paperid:
        r_paper=br.open('http://www.ncbi.nlm.nih.gov/pubmed/'+i)
        html_paper=r_paper.read()
        mail=re.findall(r' ?([\w\._]+@[\w\.]+)\.</li></ul></div>',html_paper)
        for j in mail:
                list.append(j)
        mail=[]
print list
print len(list)
print '##########################'
#link into the next page
soup=BeautifulSoup(html)
print soup.find(id="EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Entrez_Pager.Page")
#print soup.find(title="Next page of results")
if soup.find(title='next page of results'):
        print 'AAAAA'
        print soup.find(title='next page of results').find('a').get('href')



#write the mail address into files
mail_china=open('mail_china','w')
mail_outofchina=open('mail_outofchina','w')
for each in list:
        if re.search(r'\.edu\.cn$',each):
                mail_china.write(each+'\n')
        else:
                mail_outofchina.write(each+'\n')
mail_china.close()
mail_outofchina.close()

论坛徽章:
2
巳蛇
日期:2013-12-31 14:13:002015年亚洲杯之沙特阿拉伯
日期:2015-03-26 13:30:50
2 [报告]
发表于 2014-08-11 14:15 |只看该作者
看了下,那个页面的列表页是通过POST更新的。自己构造下header,然后主动提交应该就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP