Python 抓取/爬网多个页面
到目前为止,我已经发现如何刮一个或多个网页相同的网址,但不断变化的数字。然而,我找不到如何使用子类别及其子类别来刮取页面,最终获得所需的内容。 我正在尝试删除此网站: 我正在使用Scrapy,但我不知道从哪里开始。 或者你可以建议一个更好的选择,我只是使用python并从那里进行检查 谢谢Python 抓取/爬网多个页面,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,到目前为止,我已经发现如何刮一个或多个网页相同的网址,但不断变化的数字。然而,我找不到如何使用子类别及其子类别来刮取页面,最终获得所需的内容。 我正在尝试删除此网站: 我正在使用Scrapy,但我不知道从哪里开始。 或者你可以建议一个更好的选择,我只是使用python并从那里进行检查 谢谢 # -*- coding: utf-8 -*- from scrapy.spiders import CrawlSpider, Rule from scrapy.linkext
# -*- coding: utf-8 -*-
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import Spider
from scrapy import Selector
from ask_islam.items import AskIslamItem
from scrapy.http import Request
from scrapy.linkextractors import LinkExtractor
import re
class AskislamSpider(Spider):
name = "askislam"
allowed_domains = ["askislam.org"]
start_urls = ['http://www.askislam.org/']
rules = [Rule(LinkExtractor(allow = ()), callback = 'parse', follow=True)]
def parse(self, response):
hxs = Selector(response)
links = hxs.css('div[id="categories"] li a::attr(href)').extract()
for link in links:
url = 'http://www.askislam.org' + link.replace('index.html', '')
yield Request(url, callback=self.parse_page)
def parse_page(self, response):
hxs = Selector(response)
categories = hxs.css('div[id="categories"] li').extract()
questions = hxs.xpath('a').extract()
if(categories):
for categoryLink in categories:
url = 'http://www.askislam.org' + categoryLink.replace('index.html', '')
yield Request(url, callback=self.parse_page)
# print (question)
编辑
def start_requests(self):
yield Request("http://www.askislam.org", callback=self.parse_page)
def parse_page(self, response):
hxs = Selector(response)
categories = hxs.css('#categories li')
for cat in categories:
item = AskIslamItem()
link = cat.css('a::attr(href)').extract()[0]
link = "http://www.askislam.org" + link
item['catLink'] = link
logging.info("Scraping Link: %s" % (link))
yield Request(link, callback=self.parse_page)
yield Request(link, callback=self.parse_categories)
def parse_categories(self, response):
logging.info("The Cat Url")
使用这些子类别的xPath或CSS选择器读取该页面的链接,然后执行另一个Request()
编辑:
import logging
class AskislamSpider(Spider):
name = "askislam"
def start_requests(self):
yield Request("http://www.askislam.org/", callback=self.parse_page)
def parse_page(self, response):
categories = response.css('#categories li').extract()
for cat in categories:
link = cat.css("a::attr(href)").extract()[0]
link = "http://www.askislam.org/" + link
logging.info("Scraping Link: %s" % (link))
yield Request(link, callback=self.parse_page)
它的可能副本可能有助于提供一些您能够刮取的代码。对其他人来说,详细说明现有代码比为您创建一个完整的爬行器更容易。但这不是只会重复一次子类别吗?我要做的是跟踪链接,直到页面上不存在id=categories的div标记。使用选择器查看是否存在
div\categories
,如果存在,则进行另一个Request()
。。。就这样。。顺便说一句,你应该发布一些你已经尝试过的代码。。。否则我们不能help@AssabAmad请看我在回答中添加的代码,只需复制粘贴,它应该可以工作感谢它的工作。我现在正试图通过这些链接获取有关它的详细信息。函数中是否可能产生多个请求<代码>屈服请求(link,callback=self.parse_页面)屈服请求(link,callback=self.parse_类别)
是的,可能会产生多个请求。。。您可以根据自己的需要提供任意多的请求。。。请接受我的回答。。向上投票