1
은 또한이 링크 목록을 일부 interesting urls
: scrapy를 사용링크 목록에서 스크랩하는 방법은 무엇입니까?
start_urls = ['link1.com', 'link2.com', 'link3.com', ...,'linkN.com']
, 어떻게 내가 scrapy 새로운 난 그냥 하나 개의 링크에 대한이 시도하고 있기 때문에
'link1.com' 'extracted1.link.com'
'link2.com' 'extracted2.link.com'
'link3.com' 'extracted3.link.com'
...
'linkN.com' 'extractedN.link.com'
? 얻을 수 있습니다 :
:class ToySpider(scrapy.Spider):
name = "toy"
allowed_domains = ["https://www.example.com/"]
start_urls = ['link1.com']
def parse(self, response):
for link in response.xpath(".//*[@id='object']//tbody//tr//td//span//a[2]"):
item = ToyItem()
item['link'] = link.xpath('@href').extract_first()
item['interesting_link'] = link
yield item
그러나,이 날을 반환 이렇게 링크 NaN
반환을위한 @Granitosaurus의 대답을 시도 후
[
{'link': 'extracted1.link.com',
'name': 'link1.com'},
{'link': 'extracted2.link.com',
'name': 'link2.com'},
{'link': 'extracted3.link.com',
'name': 'link3.com'},
....
{'link': 'extractedN.link.com',
'name': 'linkN.com'}
]
UPDATE
: 나는 start_urls
의 모든 요소에 대해 위의 작업을 수행하고 다음 목록을 반환 할 수 있습니까 2,653,210
가지고 있지 않다 : response.xpath(".//*[@id='object']//tbody//tr//td//span//a[2]")
내가 한 것 :
def parse(self, response):
links = response.xpath(".//*[@id='object']//tbody//tr//td//span//a[2]")
if not links:
item = ToyItem()
item['link'] = 'NaN'
item['name'] = response.url
return item
for links in links:
item = ToyItem()
item['link'] = links.xpath('@href').extract_first()
item['name'] = response.url # <-- see here
yield item
list_of_dics = []
list_of_dics.append(item)
df = pd.DataFrame(list_of_dics)
print(df)
df.to_csv('/Users/user/Desktop/crawled_table.csv', index=False)
그러나 012를 반환하는 대신:
'link1.com' 'NaN'
'link2.com' 'NAN'
'link3.com' 'extracted3.link.com'
내가 가지고 :
'link3.com' 'extracted3.link.com'
를 내가 반환 할 수 있습니다 방법 (*)
감사합니다 도움. 나는 또 다른 이슈를 가지고있다. 나는 몇몇 'linksN.com'에는 아무 것도 없다고 언급했다 :' ".//*[@id='object']//tbody//tr//td//span// a [2] ". 반환하는 방법 :'linkN, NaN' 그러한 인스턴스에 대한? – tumbleweed
@tumbleweed 그냥 링크가 있는지 확인할 수 있습니다. 내 편집을 참조하십시오. – Granitosaurus
대단히 고맙습니다. 내 업데이트를 확인해 주시겠습니까? .. 웹 사이트의 값에 NaN을 반환하는 방법을 이해하지 못했습니다. 스파이더가'응답 '을 찾지 못했습니다 – tumbleweed