http://www.ncbi.nlm.nih.gov/pubmed의 검색 결과를 스크랩하려고합니다. 나는 첫 페이지에 모든 유용한 정보를 모았지만 두 번째 페이지의 탐색에 문제가 있습니다 (두 번째 페이지에는 아무런 결과가 없으며 요청에 따라 일부 매개 변수가 누락되거나 잘못되었습니다).스크래치로 POST 요청하기
내 코드는 다음과 같습니다 당신이 연구의 이러한 유형의 디자인 E-유틸리티를 사용하지 않는 이유를 정보 NCBI를 검색하는 경우
class PubmedSpider(Spider):
name = "pubmed"
cur_page = 1
max_page = 3
start_urls = [
"http://www.ncbi.nlm.nih.gov/pubmed/?term=cancer+toxic+drug"
]
def parse(self, response):
sel = Selector(response)
pubmed_results = sel.xpath('//div[@class="rslt"]')
#next_page_url = sel.xpath('//div[@id="gs_n"]//td[@align="left"]/a/@ href').extract()[0]
self.cur_page = self.cur_page + 1
print 'cur_page ','*' * 30, self.cur_page
form_data = {'term':'cancer+drug+toxic+',
'EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Entrez_Pager.Page':'results',
'email_subj':'cancer+drug+toxic+-+PubMed',
'EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Entrez_Pager.CurrPage':str(self.cur_page),
'email_subj2':'cancer+drug+toxic+-+PubMed',
'EntrezSystem2.PEntrez.DbConnector.LastQueryKey':'2',
'EntrezSystem2.PEntrez.DbConnector.Cmd':'PageChanged',
'p%24a':'EntrezSystem2.PEntrez.PubMed.Pubmed_ResultsPanel.Entrez_Pager.Page',
'p%24l':'EntrezSystem2',
'p%24':'pubmed',
}
for pubmed_result in pubmed_results:
item = PubmedItem()
item['title'] = lxml.html.fromstring(pubmed_result.xpath('.//a')[0].extract()).text_content()
item['link'] = pubmed_result.xpath('.//p[@class="title"]/a/@href').extract()[0]
#modify following lines
if self.cur_page < self.max_page:
yield FormRequest("http://www.ncbi.nlm.nih.gov/pubmed/?term=cancer+toxic+drug",formdata = form_data,
callback = self.parse2, method="POST")
yield item
def parse2(self, response):
with open('response_html', 'w')as f:
f.write(response.body)
쿠키 settings.py