使用python和漂亮的汤从网站上抓取代码

时间:2019-11-26 19:18:42

标签: python html python-3.x beautifulsoup

我的项目是关于抓取5个购物网站。我从StackOverflow和youtube找到了有用的数据。但是我被困在一个网站上。 一个div类使用样式显示,所有div类都被隐藏之后,没有显示,也没有可见的隐藏。我尝试使用ajax(用于javascript的google chrome扩展名),并应用了我在其他4种应用的不同方法,但该网站对我来说有点难。如果有人帮助我阅读这些标签,以便我可以从网站上抓取数据,那将是有益的。 网站网址为:Website

当前,我正在使用简单的代码进行解析。这是我使用的代码。

 y = requests.get(url)

 soup = BeautifulSoup(y.text, "html.parser")
 products = soup.find('div', class_='container min-w1170')
 products = products.find('div', class_='row mgt25')

 print(products)

 products = products.find_all("div", class_="findify-components-common--grid__column findify-components-common--grid__column-6")
 print(products)

直到第一次打印,所有div类都在工作,但是之后,我无法从下一个div类中找到数据。

1 个答案:

答案 0 :(得分:0)

此脚本将为您提供所需的一切。使用beautifulsoup的技巧是仔细分析html并在元素中查找模式。您的代码中的错误可能是使用了错误的属性值。

from bs4 import BeautifulSoup
import requests
from selenium import webdriver
from socket import socket

url = 'https://homeshopping.pk/search.php?q=dell'
browser = webdriver.Firefox()
browser.get(url)
html = browser.page_source
soup = BeautifulSoup(html,features='html.parser')

products = soup.find_all('div',{'class':'findify-components--cards--product innerp product-box'})  # the div for each product tile
for product in products:
    name = (product.find('span',{'class':'findify-components--text findify-components--cards--product__title'})).get_text()
    price = (product.find('span',{'class':'price findify-components--cards--product--price__price'})).get_text()
    img_src = product.find('img')
    all_urls = product.find_all('a')
    product_url = all_urls[1]   # it will always be the second one
    product_url_only = product_url['href']