抓取ajax动态网页java( HTML2019-04-28编程之家收集整理的篇文章介绍)
优采云 发布时间: 2022-02-16 13:21抓取ajax动态网页java(
HTML2019-04-28编程之家收集整理的篇文章介绍)
Web scraper - scrapy 中的动态 start_urls
HTML 2019-04-28
编程之家采集的这篇文章文章主要介绍了网页抓取工具——scrapy中的动态start_urls。编程之家的小编觉得挺不错的。 .
我正在使用 scrapy 在 网站 上抓取多个页面。
变量start_urls用于定义要爬取的页面。
我最初从第一页开始,因此在文件 example_spider.py 中定义 start_urls = [first page]
一旦我从第 1 页获得更多信息,我会找出要抓取的下一页是什么,然后相应地分配 start_urls。所以我要start_urls = [page 1, page 2, ..., Changes to page K]覆盖example_spider.py,然后再执行scrapy。
这是最好的方法还是有更好的方法来使用scrapy API动态分配start_urls而不必覆盖example_splider.py?
谢谢。
解决方案
start_urls 类属性收录起始 URL - 仅此而已。如果你提取要删除的其他页面的URL-从[another]回调的解析回调中获取对应的请求:
class Spider(BaseSpider):
name = 'my_spider'
start_urls = [
'http://www.domain.com/'
]
allowed_domains = ['domain.com']
def parse(self,response):
'''Parse main page and extract categories links.'''
hxs = HtmlXPathSelector(response)
urls = hxs.select("//*[@id='tSubmenuContent']/a[position()>1]/@href").extract()
for url in urls:
url = urlparse.urljoin(response.url,url)
self.log('Found category url: %s' % url)
yield Request(url,callback = self.parseCategory)
def parseCategory(self,response):
'''Parse category page and extract links of the items.'''
hxs = HtmlXPathSelector(response)
links = hxs.select("//*[@id='_list']//td[@class='tListDesc']/a/@href").extract()
for link in links:
itemLink = urlparse.urljoin(response.url,link)
self.log('Found item link: %s' % itemLink,log.DEBUG)
yield Request(itemLink,callback = self.parseItem)
def parseItem(self,response):
...
如果你还想自定义启动请求创建,请重写方法
总结
以上是编程之家为你采集的网页抓取工具——scrapy全部内容中的动态start_urls,希望文章可以帮助你解决scrapy程序开发中遇到的网页抓取工具——动态start_urls问题。
如果你觉得编程之家网站的内容还不错,欢迎你把编程之家网站推荐给你的程序员朋友。