I 3 verschiedene Variationen von LinkExtractor versucht, aber es ist immer noch die ‚leugnen‘ Regel ignorieren und Sub-Domains in allen drei Variationen kriechen .... Ich möchte die Sub-Domains von der auszunehmen kriechen.Scrapy: Linkextractor Regel nicht funktioniert
mit 'erlauben' Regel nur versucht. Damit nur die Haupt-Domain heißt example.edu.uk
rules = [Rule(LinkExtractor(allow=(r'^example\.edu.uk(\/.*)?$',)))] // Not Working
versucht, mit 'Verweigern' Regel nur. Zu leugnen, alle Sub-Domains dh sub.example.edu.uk
rules = [Rule(LinkExtractor(deny=(r'(?<=\.)[a-z0-9-]*\.edu\.uk',)))] // Not Working
mit beiden Versuchte 'erlauben & deny' -Regel
rules = [Rule(LinkExtractor(allow=(r'^http:\/\/example\.edu\.uk(\/.*)?$'),deny=(r'(?<=\.)[a-z0-9-]*\.edu\.uk',)))] // Not Working
Beispiel:
Folgen diese Verbindungen
- example.edu.uk/fsdfs.htm
- example.edu.uk/nkln.htm
- example.edu.uk/vefr.htm
- example.edu.uk/opji.htm
Verwerfen Sub-Domain Links
- sub-domain.example.edu.uk/fsdfs.htm
- sub-domain.example.edu.uk/nkln.htm
- sub-domain.example.edu.uk/vefr.htm
- sub-domain.example.edu.uk/opji.htm
ist der komplette Code ...
class NewsFields(Item):
pagetype = Field()
pagetitle = Field()
pageurl = Field()
pagedate = Field()
pagedescription = Field()
bodytext = Field()
class MySpider(CrawlSpider):
name = 'profiles'
start_urls = ['http://www.example.edu.uk/listing']
allowed_domains = ['example.edu.uk']
rules = (Rule(LinkExtractor(allow=(r'^https?://example.edu.uk/.*',))),)
def parse(self, response):
hxs = Selector(response)
soup = BeautifulSoup(response.body, 'lxml')
nf = NewsFields()
ptype = soup.find_all(attrs={"name":"nkdpagetype"})
ptitle = soup.find_all(attrs={"name":"nkdpagetitle"})
pturl = soup.find_all(attrs={"name":"nkdpageurl"})
ptdate = soup.find_all(attrs={"name":"nkdpagedate"})
ptdesc = soup.find_all(attrs={"name":"nkdpagedescription"})
for node in soup.find_all("div", id="main-content__wrapper"):
ptbody = ''.join(node.find_all(text=True))
ptbody = ' '.join(ptbody.split())
nf['pagetype'] = ptype[0]['content'].encode('ascii', 'ignore')
nf['pagetitle'] = ptitle[0]['content'].encode('ascii', 'ignore')
nf['pageurl'] = pturl[0]['content'].encode('ascii', 'ignore')
nf['pagedate'] = ptdate[0]['content'].encode('ascii', 'ignore')
nf['pagedescription'] = ptdesc[0]['content'].encode('ascii', 'ignore')
nf['bodytext'] = ptbody.encode('ascii', 'ignore')
yield nf
for url in hxs.xpath('//p/a/@href').extract():
yield Request(response.urljoin(url), callback=self.parse)
Kann jemand bitte helfen? Dank
Post einige Beispiel Links auch, dass Sie verarbeitet werden wollen und diejenigen, die Sie nicht verarbeitet werden möchten –
Auch bitte, wenn Sie sagen, nicht funktioniert, was ist Das passiert uns? Post-Protokolle wenn möglich –
Hallo @TarunLalwani Was ist es, dass Sie nicht in meiner Frage zu verstehen? Alle Links in der Hauptdomain müssen gecrawlt werden und alle Links unter Subdomains müssen verworfen werden. Wie auch immer, ich habe die Frage aktualisiert. Siehe oben. – Slyper