当前位置: 首页 > 知识库问答 >
问题:

网刮-谁能帮助清理这一点?

姬国安
2023-03-14

我是一个相当新的时候,谈到这一点,我已经工作了几天的网页刮削现在。我一直在积极地试图避免问这个问题,但我真的被困住了。

我的问题

  1. 我当前定位的span循环的位置,每次运行“for product”循环时,它都会打印每个列表的所有价格。如果我把它放在这个循环之外,它要么打印列表中的第一个,要么打印列表中的最后一个。如何提取价格并将其打印在每个产品的旁边。

我知道我有很多未使用的进口产品。这些只是我尝试的各种途径,但还没有消除它们。

这里的最终目标是推送到json或csv文件(目前也没有编写--但有了数据后,对如何处理这方面有一个很好的想法。

from bs4 import BeautifulSoup
import requests
import shutil
import csv
import pandas
from pandas import DataFrame
import re
import os
import urllib
import locale
import json
from selenium import webdriver
os.environ["PYTHONIOENCODING"] = "utf-8"

browser = webdriver.Chrome(executable_path='C:/Users/andrew.glass/chromedriver.exe')
browser.get("https://www.mcavoyguns.co.uk/contents/en-uk/d130_Beretta_Over___Under_Competeition_shotguns.html")

URL = 'https://www.mcavoyguns.co.uk/contents/en-uk/d130_Beretta_Over___Under_Competeition_shotguns.html'
page = requests.get(URL)

soup = BeautifulSoup(page.content, 'html.parser')
products = soup.find_all("div", "GC62 Product")

for product in products:
#title
   title = product.find("h3") 
   titleText = title.text if title else ''

#manufacturer name
   manufacturer = product.find("div", "GC5 ProductManufacturer")
   manuText = manufacturer.text if manufacturer else ''

#image location
   img = product.find("div", "ProductImage")
   imglinks = img.find("a") if img else ''
   imglinkhref = imglinks.get('href')  if imglinks else ''
   imgurl = 'https://www.mcavoyguns.co.uk/contents'+imglinkhref
   #print(imgurl.replace('..', ''))

#description
   description = product.find("div", "GC12 ProductDescription")
   descText = description.text if description else ''

    #more description
   more = product.find("div", "GC12 ProductDetailedDescription")
   moreText = more.text if more else ''

#price - not right
   spans = browser.find_elements_by_css_selector("div.GC20.ProductPrice span")
   for i in range(0,len(spans),2):
       span = spans[i].text
       print(span)
       i+=1 

   print(titleText)
   print(manuText)
   print(descText)
   print(moreText)
   print(imgurl.replace('..', ''))
   print("\n")

输出:

£1,695.00
£1,885.00
£1,885.00
£2,015.00
£2,175.00
£2,175.00
£2,385.00
£2,115.00
£3,025.00
£3,315.00
£3,635.00
£3,925.00
£2,765.00
£3,045.00
£3,325.00
£3,615.00
£3,455.00
£2,815.00
£3,300.00
£3,000.00
£7,225.00
£7,555.00
£7,635.00
£7,015.00
£7,355.00
12G Beretta DT11 Trap Adjustable
beretta
Click on more for full details.
You may order this gun online, however due to UK Legislation we are not permitted to ship directly to you, we can however ship to a registered firearms dealer local to you. Once we receive your order, we will contact you to arrange which registered firearms dealer you would like the gun to be shipped to.




DT 11 Trap (Steelium Pro)

12

2 3/4"
10x10 rib
3/4&F

30"/32" weight; 4k
https://www.mcavoyguns.co.uk/contents/media/l_dt11_02.jpg


共有1个答案

王扬
2023-03-14

@baduker的评论给我指明了正确的方向--缩进。谢谢!

import requests
import shutil
import csv
import pandas
from pandas import DataFrame
import re
import os
import urllib
import locale
import json
from selenium import webdriver
os.environ["PYTHONIOENCODING"] = "utf-8"

browser = webdriver.Chrome(executable_path='C:/Users/andrew.glass/chromedriver.exe')
browser.get("https://www.mcavoyguns.co.uk/contents/en-uk/d130_Beretta_Over___Under_Competeition_shotguns.html")

URL = 'https://www.mcavoyguns.co.uk/contents/en-uk/d130_Beretta_Over___Under_Competeition_shotguns.html'
page = requests.get(URL)

soup = BeautifulSoup(page.content, 'html.parser')
products = soup.find_all("div", "GC62 Product")

for product in products:
#title
    title = product.find("h3") 
    titleText = title.text if title else ''

 #manufacturer name
    manufacturer = product.find("div", "GC5 ProductManufacturer")
    manuText = manufacturer.text if manufacturer else ''

 #image location
    img = product.find("div", "ProductImage")
    imglinks = img.find("a") if img else ''
    imglinkhref = imglinks.get('href')  if imglinks else ''
    imgurl = 'https://www.mcavoyguns.co.uk/contents'+imglinkhref
    #print(imgurl.replace('..', ''))
 
#description
    description = product.find("div", "GC12 ProductDescription")
    descText = description.text if description else ''

     #more description
    more = product.find("div", "GC12 ProductDetailedDescription")
    moreText = more.text if more else ''

 #price - not right
spans = browser.find_elements_by_css_selector("div.GC20.ProductPrice span")
for i in range(0,len(spans),2):
    span = spans[i].text
    print(span)
    i+=1 

    print(titleText)
    print(manuText)
    print(descText)
    print(moreText)
    print(imgurl.replace('..', ''))
    print("\n")

 类似资料:
  • 我不太理解while循环中的条件,以及它代表什么'>>>='。

  • 因此,我正在尝试webscrape https://data.bls.gov/cgi-bin/surveymost?bls,并且能够弄清楚如何通过点击进行webscrape以获得一个表。 我正在练习的选择是在您选择与薪酬下的“雇用成本指数(ECI)文职(未调整)-CIU1010000000000A”相关联的复选框之后,然后选择“检索数据”。 处理完这两个之后,将显示一个表。这就是我要刮的桌子。 下

  • 下面的代码片段摘自我的global.class.php文件。当搜索“类型”等于“postcode”或“part-number”时,执行SQL查询所需的时间是我当前遇到的问题。请参阅下面的代码片段以获得包括处理时间在内的解释。 请参阅以下执行时间: Page time是调用findOrder(“type”,“query”)所用的时间; SQL time是直接在phpMyAdmin内重复查询所用的时间

  • 我正在我的Android设备上进行实验,尝试使用应用程序代码,以便我可以同时学习它。但我对如何编辑smali代码非常着迷。对于只学过OOP语言的人来说,这并不是那么简单。 这是我的smali代码: 这是它的等效java代码: 现在我想让事情简单一些,在参数“MyProcessor”中加一个常量。Java语言中的l'I.E: 我尝试过几种不同的方法,比如: 但是我在编译错误,所以这显然是错误的。此外

  • 问题内容: 对于我的研究生研究,我正在创建一个训练识别图像的神经网络。就像许多示例一样,我要比仅对RGB值进行栅格化,下采样并将其发送到网络的输入要复杂得多。实际上,我使用了100多个经过独立训练的神经网络来检测特征,例如线条,阴影图案等。更像是人眼,到目前为止,它的效果非常好!问题是我有很多训练数据。我向它展示了汽车的100多个示例。然后是一个人的100个例子。然后是100多只狗的样子,等等。这

  • 应用主机综合防护系统,简称 网防G01,是首款专门针对政府网站及服务器等关键信息基础资源进行综合防护的产品,由公安部第一研究所和计算机病毒防治技术国家工程实验室(北京)研发。