|
楼主 |
发表于 2017-7-6 12:41:08
|
显示全部楼层
本帖最后由 早起的达仙僧 于 2017-7-6 14:05 编辑
不好意思,出去出差了一周,我今天回来调试了下发现爬取又正常了,但是第一页没法爬取,只能爬取后面的页数,我在爬虫的程序中做了标注。
- def parse(self, response):
- #max_num = response.xpath('//div[@class="pagelink"]/a[@class="last"]/text()').extract()[0]
- max_num=1#第一页没法爬取,不知道为什么,第二页是可以的
- url_1 = str(response.url)[:-7]
- for num in range(1,int(max_num)+1):
- url = url_1 + '_' + str(num) + self.bashurl
- yield Request(url,callback=self.get_name)
复制代码
在这段代码中,如果我的max_num=1,则什么都爬取不到,但是如果我改成2,3,4。。。后面的几页内容就能爬取到了,感觉和上周遇到的问题又不太一样了,麻烦亲帮我看看是不是我程序哪里写得不合理
补充一下,我中午又测试了一下代码,我将爬虫的py文件进行了简化
- import re
- import scrapy #导入scrapy包
- from bs4 import BeautifulSoup
- from scrapy.http import Request ##一个单独的request的模块,需要跟进URL的时候,需要用它
- from dingdian.items import DingdianItem ##这是我定义的需要保存的字段,(导入dingdian项目中,items文件中的DingdianItem类)
- class Myspider(scrapy.Spider):
- name = 'dingdian'
- allowed_domains = ['23us.com']
- start_urls = ['http://www.x23us.com/class/1_4.html']
- def parse(self, response):
- tds = response.xpath('//tr[@bgcolor="#FFFFFF"]')
- for td in tds:
- novelname = td.xpath('td[1]/a[2]/text()').extract()[0]
- novelurl = td.xpath('td[1]/a[1]/@href').extract()[0]
- print(novelname+':'+novelurl)
复制代码
我单单就想爬取这个网页中的列表中的书名以及简介的地址,但是发现遇到了第一次的问题,就是爬取的数据和网上显示的不对,而且这个问题有点奇怪,我上午爬取的时候还是对的,中午爬取的数据就有差异了。现在是每个板块的第一页可以爬取正确,后面几页爬取到的数据和页面显示的不同 |
|