51987


BeautifulSoup4とRequestsでスクレイピングを行いたいのですが、  
srcで検索をしてURLを取得してしまうと、想定よりも小さいサイズの画像ファイルがダウンロードされます。  
これはHTMLのimgタグにあるsrcsetの影響です。  
おそらく、自身がウィンドウサイズを指定できていないのが原因と考えています。  
以上の点を踏まえて、ヘッダーにウィンドウサイズの情報を追記する必要があると考えたのですが、その方法があればご教授ください。

説明が乏しく例示した方がわかりやすいと感じたら、コメントをいただければ追記いたします。


CC BY-SA 4.0
2019-01-13T11:53:07.933
51949
2020-04-06T06:28:07.257
2020-04-06T06:28:07.257
3060
16877
question
python3 html5 web-scraping beautifulsoup
Pythonのbs4とrequestsを用いたスクレイピングでsrcsetに対応したい


おそらく、この記事が参考になると思います。  
[Python using beautiful soup to extract attribute from
html](https://stackoverflow.com/q/46582587/9014308)

こちらはseleniumを使っているので少し違うかもしれませんが。  
[I can't get all of image attributes using Beautiful Soup and
Selenium](https://stackoverflow.com/q/46854971/9014308)  
[Scraping Instagram with
BeautifulSoup](https://stackoverflow.com/q/49085421/9014308)


CC BY-SA 4.0
2019-01-13T12:21:57.880
51951
2019-01-13T12:21:57.880
26370
51949
answer


srcsetを検索する手法を試しました。  
`foo = soup.findAll('img', attrs = {'srcset' : True})`  
以上で、`foo`にはそれらのリストが格納されます。  
※`soup`はBeautifulSoupを用いてlxml形式へと変換させてものです。

ここからウェブサイトの記述規則などを判断し、`split`を用いて画像のURLを特定することができます。  
この際、先頭にある空白``などに留意することでコードチェックをスムーズにできます。

URLさえ割り出せれば問題なくスクレイピングが可能でした。  
なお、画像のサイズの順序はウェブサイト側に合わせるしかなく、柔軟に対応するためには、wxの値を評価することで最も大きいものを選ぶよう実装しました。


CC BY-SA 4.0
2019-01-15T08:41:00.130
51987
2019-01-15T08:41:00.130
16877
51949
answer