のPythonに(非常に)新しいプログラミング一般ウェブサイトから複数のページをスクラップする方法は?
に私は私のコードは動作しますが、それが読めないと
実用的ではありませんScrapyと同じウェブサイトの複数のページ/セクションからデータをこすりしようとしてきました
import scrapy
class SomeSpider(scrapy.Spider):
name = 'some'
allowed_domains = ['https://example.com']
start_urls = [
'https://example.com/Python/?k=books&p=1',
'https://example.com/Python/?k=books&p=2',
'https://example.com/Python/?k=books&p=3',
'https://example.com/Python/?k=tutorials&p=1',
'https://example.com/Python/?k=tutorials&p=2',
'https://example.com/Python/?k=tutorials&p=3',
]
def parse(self, response):
response.selector.remove_namespaces()
info1 = response.css("scrapedinfo1").extract()
info2 = response.css("scrapedinfo2").extract()
for item in zip(scrapedinfo1, scrapedinfo2):
scraped_info = {
'scrapedinfo1': item[0],
'scrapedinfo2': item[1]}
yield scraped_info
これを改善するにはどうすればよいですか?
私は
私がいる間、Scrapyはすべてのカテゴリとページをそのジョブを実行できるようになるように
categories = [books, tutorials, a, b, c, d, e, f]
in a range(1,3)
ようなものが必要なカテゴリとページの一定量内を検索したいのですが
01:容易である任意のアイデアは、私が試してみました何
歓迎されている
を編集して、他のウェブサイトに適応します
categories = ["books", "tutorials"]
base = "https://example.com/Python/?k={category}&p={index}"
def url_generator():
for category, index in itertools.product(categories, range(1, 4)):
yield base.format(category=category, index=index)
しかしScrapyはあなたがyield Request(url)
を使用して開始時にURLを生成する方法start_requests()
を使用することができます
[scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min),
scraped 0 items (at 0 items/min)
使用ボタン '{}'正しくSOにコードをフォーマットするためです。 – furas
'url_generator()'はクラス内部のメソッドなので 'self - ' def url_generator(self): 'が必要です。' category(product) 'self.categories'と同じです。ところで、 'base.format(category = category、index = index)'で得られるものを見るには 'print()'を使います。 – furas
スクラピーにはメソッド[start_requests](https://doc.scrapy.org/en/latest/)があります。 topics/spiders.html#scrapy.spiders.Spider.start_requests)を使用して、開始時にURLを生成します。そして 'Request(url = ...)'を返さなければなりません。文字列 'url'だけでなく、 – furas