【发布时间】:2021-05-24 01:38:35
【问题描述】:
您好,我是编程新手。所以我花了 4 天时间尝试学习 python。我也说出了一些新的脏话。 我特别有兴趣尝试一些网络抓取来学习新东西并获得一些曝光以了解它是如何运作的。 这就是我想出的。见最后的代码。它有效(在一定程度上)
但是缺少什么?
-
这个网站有分页。在这种情况下,价值 11 页。您将如何添加到此脚本并让 python 也查看其他页面并执行相同的抓取。即刮第一页,刮第2、3 ... 11页并将结果发布到csv? https://www.organicwine.com.au/vegan/?pgnum=1
https://www.organicwine.com.au/vegan/?pgnum=2
https://www.organicwine.com.au/vegan/?pgnum=3
https://www.organicwine.com.au/vegan/?pgnum=4
https://www.organicwine.com.au/vegan/?pgnum=5
8、9、10 和 11
-
在这些页面上,图像实际上是一个缩略图,例如 251 像素 x 251 像素。 你会怎么去添加到这个脚本中说。当您访问它时,请点击详细产品页面的链接并从那里捕获图像链接,其中图像为 1600 像素 x 1600 像素,并将这些链接发布到 CSV https://www.organicwine.com.au/mercer-wines-preservative-free-shiraz-2020
-
当我们识别出这些链接后,我们还可以将这些较大的图像下载到一个文件夹中
-
CSV 编写器。我也不明白第 58 行 对于我在范围内(23) 如果不计算它们,我怎么知道有多少产品(即第一页有 24 种产品)
所以这就是我想学习的方法。要求不高(他讽刺地说)我可以付钱请人来做这件事,但那有什么乐趣呢?这并没有教我如何“钓鱼”。
哪里有学习python的好地方?关于网络抓取的大师班。这似乎是反复试验和博客文章,您可以在任何地方获取一些信息来将它们拼凑在一起。 也许我需要一个导师。 我希望有人可以联系到我,告诉我 beautifulSoup 是什么。通过反复试验和主要猜测来解决这个问题。不了解它,但它确实有效。
无论如何,我们将不胜感激任何有助于将所有这些整合在一起以生成一个体面的脚本的帮助。 希望有人不介意帮助我。
向organicwine 道歉,因为他们将他们的网站用作学习工具。我不希望对网站造成任何伤害或滋扰
提前谢谢你 约翰
代码:
import requests
import csv
from bs4 import BeautifulSoup
URL = "https://www.organicwine.com.au/vegan/?pgnum=1"
response = requests.get(URL)
website_html = response.text
soup = BeautifulSoup(website_html, "html.parser")
product_title = soup.find_all('div', class_="caption")
# print(product_title)
winename = []
for wine in product_title:
winetext = wine.a.text
winename.append(winetext)
print(f'''Wine Name: {winetext}''')
# print(f'''\nWine Name: {winename}\n''')
product_price = soup.find_all('div', class_='wrap-thumb-mob')
# print(product_price.text)
price =[]
for wine in product_price:
wineprice = wine.span.text
price.append(wineprice)
print(f'''Wine Price: {wineprice}''')
# print(f'''\nWine Price: {price}\n''')
image =[]
product_image_link = (soup.find_all('div', class_='thumbnail-image'))
# print(product_image_link)
for imagelink in product_image_link:
wineimagelink = imagelink.a['href']
image.append(wineimagelink)
# image.append(imagelink)
print(f'''Wine Image Lin: {wineimagelink}''')
# print(f'''\nWine Image: {image}\n''')
#
#
# """ writing data to CSV """
# open OrganicWine2.csv file in "write" mode
# newline stops a blank line appearing in csv
with open('OrganicWine2.csv', 'w',newline='') as file:
# create a "writer" object
writer = csv.writer(file, delimiter=',')
# use "writer" obj to write
# you should give a "list"
writer.writerow(["Wine Name", "Wine Price", "Wine Image Link"])
for i in range(23):
writer.writerow([
winename[i],
price[i],
image[i],
])
【问题讨论】:
-
获取你可以做的页面
for i in range(11): url = f"https://www.organicwine.com.au/vegan/?pgnum={i+1}" -
我觉得你的问题更适合codereview.stackexchange.com
-
得到你可以做多少酒
len(winename) -
您好鲍里斯,感谢您抽出宝贵时间回复。 Range 部分和 Len(winename) 很棒,我可以使用它。还要感谢您对 codereview.stackexchange.com 社区的建议。我会在那里看一下并摆出这个姿势。谢谢。
-
嗨,鲍里斯,感谢您的帮助,我非常感谢您。只是为了让你知道结果,我联系了 codereview.stackexchange.com,他们在那里非常粗鲁和无益......“你应该知道代码......!”也许我只是运气不好,遇到了这个星球上最无助的人。我会继续寻求更多的帮助和鼓励。
标签: python web-scraping beautifulsoup