web-scraping - scraping - scrapy tutorial español
Scrape America''s Career InfoNet (1)
Tengo identificadores de empleador, que pueden utilizarse para obtener el área comercial:
https://www.careerinfonet.org/employ4.asp?emp_id=558742391
El HTML contiene los datos en tablas tr / td:
Business Description: Exporters (Whls) Primary Industry:Other Miscellaneous Durable Goods Merchant Wholesalers Related Industry:Sporting and Athletic Goods Manufacturing
Entonces me gustaría obtener
- Exportadores (Whls)
- Otros bienes comerciables de bienes duraderos
- Fabricación de artículos deportivos y atléticos
Mi código de ejemplo se ve así:
import requests
from bs4 import BeautifulSoup
page = requests.get("https://www.careerinfonet.org/employ4.asp?emp_id=558742391")
soup = BeautifulSoup(page.text, ''html.parser'')
div = soup.find(''td'', class_=''content'')
for td in div.find_all(''td''):
print(td.text)
Me gustaría adelantar esto diciendo que esta técnica es bastante descuidada, pero que hace el trabajo asumiendo que cada página que raspe tenga una configuración similar.
Su código es excelente para acceder a la página en sí, simplemente agrego un cheque para cada elemento para determinar si es la "Business Description"
, o la "Primary"
"Related Industry"
"Primary"
o "Related Industry"
. Luego puedes acceder al elemento apropiado y usar eso.
import requests
from bs4 import BeautifulSoup
page = requests.get("https://www.careerinfonet.org/employ4.asp?emp_id=558742391")
soup = BeautifulSoup(page.text, ''html.parser'')
div = soup.find(''td'', class_=''content'')
lst = div.find_all(''td'')
for td in lst:
if td.text == "Business Description:":
print(lst[lst.index(td)+1].text)
if td.text == "Primary Industry:":
print(lst[lst.index(td)+1].text)
if td.text == "Related Industry:":
print(lst[lst.index(td)+1].text)
La otra pequeña modificación que hice fue poner div.find_all(''td'')
en una lista que luego puede ser indexada, para acceder al elemento que desea.
¡Espero eso ayude!