さまざまなページからいくつかのデータをスクラップする際に問題があります。私はGoogleにいくつかのソリューションを試しましたが、まったく動作しませんでした。ウェブスクレイピング次のページ
私のポイントは、このウェブサイトからのグラフィックスカードの名前だけウェブスクラップです:最初の場所では「https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page=2&PageSize=12&order=BESTMATCH」
、私はちょうどページのいずれかで動作するコードをビルドしてみました。そしてそれはかなりうまくいく。これにより
#
from urllib2 import urlopen as uReq
from bs4 import BeautifulSoup as soup
import requests
import re
my_url = "https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page=2&PageSize=12&order=BESTMATCH"
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"item-container"})
container = containers[0]
for container in containers:
title_container = container.findAll("a",{"class":"item-title"})
product_name = title_container[0].text
print("product_name: " + product_name)
#
、私はHTMLで1に切り替えた場合、私はとして最初のものの名前を取得することができます2ページでグラフィックカードの名前を得ましたよく
#私はそれを処理するためにループを作りましたが、最初のページを何度も何度も何度も返すようです。
#
i = 1
my_url = "https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page={}&PageSize=12&order=BESTMATCH".format(i)
while i <= 3:
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
# esse é o que vou usar para fazer o loop
containers = page_soup.findAll("div",{"class":"item-container"})
container = containers[0]
for container in containers:
title_container = container.findAll("a",{"class":"item-title"})
product_name = title_container[0].text
print("product_name: " + product_name)
i = i+1
#
誰もがそれで私を助けることができていますか? = D
PS:コードを変更して、より良いソリューションを提案してください。 PS 2:Jupyter LabのPython 3.5。
こんにちは、@シャヒン。ご助力ありがとうございます。うん、それは完璧に機能しました!私はあなたが私にあなたのコードを理解するためにいくつかのGoogleを試したので、(lxml)を使用するように私が提案したすべてのパッケージを知っていませんでした。 私のコードについては、何がうまくいかないのか説明できますか?最初のページを何度も何度も掻き取っていた理由を理解できません。私は変更するためにループをしましたか? btw:お待ちください。私はあなたの投稿を見ましたが、私は仕事をしていましたが、私は試してみるためにPythonを持っていません。 = D –
コメントが削除されました。ありがとう。 – SIM
詳細を探すためにコードを改良しました: これを行うより良い方法ですか? (私は "for"で2つのループを実行しようとしました...形成なしで表示するのは恐ろしいです)-------soup.select( "。item-title")のコンテナの container:商品名:{} "。書式(container.text)) soup.select("値段 ")のshipping_containerの場合: print(" shipping_const:{} "。書式(shipping_container.text)) –