クローリング、スクレイピングのためにscrapyの勉強をしているのですが、
恐らくscrapyというよりかはpythonの基本的な部分で必要な知識が足りないのか、
参考書やサイト上に掲載されているコード表現の一部が理解できません。
具体的にはタイトルの通り「::attr(href)」や「a::text」などと表現されている「::」が何を意味しているのか調べても出てこずにわかりません。
参考としてこちらの記事のコードを引用させていただきます。(コード内容を理解したいというよりかは「::」がpythonを扱っていくうえでどういった役割を持っているのか知りたいです。)
↓
https://qiita.com/Chanmoro/items/f4df85eb73b18d902739
import
1from ten_min_scrapy.items import Post 2 3class ScrapyBlogSpiderSpider(scrapy.Spider): 4 name = 'scrapy_blog_spider' 5 allowed_domains = ['blog.scrapinghub.com'] 6 start_urls = ['http://blog.scrapinghub.com'] 7 8 def parse(self, response): 9 """ 10 レスポンスに対するパース処理 11 """ 12 # response.css で scrapy デフォルトの css セレクタを利用できる 13 for post in response.css('.post-listing .post-item'): 14 # items に定義した Post のオブジェクトを生成して次の処理へ渡す 15 yield Post( 16 url=post.css('div.post-header a::attr(href)').extract_first().strip(), 17 title=post.css('div.post-header a::text').extract_first().strip(), 18 date=post.css('div.post-header span.date a::text').extract_first().strip(), 19 ) 20 21 # 再帰的にページングを辿るための処理 22 older_post_link = response.css('.blog-pagination a.next-posts-link::attr(href)').extract_first() 23 if older_post_link is None: 24 # リンクが取得できなかった場合は最後のページなので処理を終了 25 return 26 27 # URLが相対パスだった場合に絶対パスに変換する 28 older_post_link = response.urljoin(older_post_link) 29 # 次のページをのリクエストを実行する 30 yield scrapy.Request(older_post_link, callback=self.parse) 31コード
恐れ入りますがご教示いただけますと幸いです。
どうかよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/01 16:06