Bs4 найти p тегов по классам - PullRequest
       3

Bs4 найти p тегов по классам

1 голос
/ 11 октября 2019

Я пытаюсь создать этот код, чтобы очистить веб-сайт для названий продуктов. Я пытаюсь найти p-теги со специфическим классом. Вот код, он просто не печатает, когда я запускаю его. Элемент, который я пытаюсь очистить, прокомментирован.

#<p class="product-name">Yaesu FT-DX101D HF/50MHz 100W SDR</p>


import requests
import urllib.request
import time
from bs4 import BeautifulSoup

url = "https://www.gigaparts.com/products/radios-amps-and-repeaters#/?Category1=Radios&Category2=Radios%2C+Amps+and+Repeaters&Category3=Radio+Transceivers&search_return=all&Category4=Base+Stations"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
for i in range(10):
    a_tags = soup.find("p", {"class": "product-name"})
    print(a_tags)
    time.sleep(2)

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете имитировать JQuery XHR, но удалите все ненужные вещи, которые с течением времени выглядят наиболее вероятными.

import requests, re, json, ast
from bs4 import BeautifulSoup

r = requests.get('https://gigaparts-v2.ecomm-nav.com/nav.js?initial_url=https%3A%2F%2Fwww.gigaparts.com%2Fproducts%2Fradios-amps-and-repeaters%23%2F%3FCategory1%3DRadios%26Category2%3DRadios%252C%2BAmps%2Band%2BRepeaters%26Category3%3DRadio%2BTransceivers%26search_return%3Dall%26Category4%3DBase%2BStations&nxt_custom_options=formKey%3D%26groupId%3DNOT%2BLOGGED%2BIN&Category1=Radios&Category2=Radios%2C+Amps+and+Repeaters&Category3=Radio+Transceivers&search_return=all&Category4=Base+Stations&callback=jQuery0')
p = re.compile(r'jQuery0\((.*)\);')
d = ast.literal_eval(p.findall(r.text)[0])
soup = bs(d['content'], 'lxml')
product_names = [i.text for i in soup.select('.product-name')]
print(product_names )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...