[英]How to scrape data from urls list
我正在尝试制作一个从网站列表中抓取信息的代码。 我的目标是获取所有数据并将其保存在 JSON 文件中。 结尾应该是这样的:
[
{
"title": "Python developer",
"place": "Slovensko",
"salary": "od 1000 €",
"contract_type": "dohoda",
"contact_email": "hr@hyperia.sk"
},
...
]
我制作了一个从种子网站获取所有链接的代码,它工作正常,但我被困在数据抓取中。 这是我写的代码:
from bs4 import BeautifulSoup
import requests
import re
zaciatok = "https://www.hyperia.sk/kariera"
def getHTMLdocument(zaciatok):
response = requests.get(zaciatok)
return response.text
vsetky_linky= []
html_document = getHTMLdocument(zaciatok)
soup = BeautifulSoup(html_document, "html.parser")
for link in soup.find_all("a", attrs={'href',"arrow-link", }):
vsetky_linky.append(link.get("href"))
vsetky_linky.pop()
urls = []
for x in vsetky_linky:
urls.append("https://www.hyperia.sk"+x)
daaata = []
for url in urls:
print(url)
req = requests.get(url)
req.encoding = "utf-8-sig"
polievka = BeautifulSoup(req.text, "html.parser")
nadpis = polievka.find("div", attrs={'class': 'hero-text col-lg-12'})
br = polievka.find("br")
for p in polievka.select("p:has(br)"):
daaata.append(
[
nadpis.get_text(strip=True) ,
br.get_text(strip=True) ,
]
)
print(daaata)
最后我打印了报废的数据,我看到它还从 header 下提取了一个文本(我只需要 header “Python 开发人员”而不是它下面的文本)。 你能帮助我吗?
尝试 select 你的元素更具体,在你的情况下<h1>
:
"title": polievka.h1.text,
示例如何在您的for-loop
中使用,随意调整它以适应您的最终需求,我的斯洛伐克语不是那么好,所以我不知道什么重要;)
...
daaata = []
for url in urls:
print(url)
req = requests.get(url)
req.encoding = "utf-8-sig"
polievka = BeautifulSoup(req.text, "html.parser")
daaata.append({
"title": polievka.h1.text,
"place": polievka.select_one('img[alt="place"] + p br').next,
"salary": polievka.select_one('img[alt="wage"] + p br').next,
"contract_type": polievka.select_one('img[alt="work"] + p br').next,
"contact_email": polievka.select_one('a[href^="mailto"]').get('href').split(':')[-1]
})
daaata
[{'title': 'Python developer - študent', 'place': 'Slovensko', 'salary': '6 € / hodina', 'contract_type': 'dohoda o brig. práci študenta', 'contact_email': 'hr@hyperia.sk'}, {'title': 'Senior PPC špecialista', 'place': 'Slovensko', 'salary': 'od 1 800,- €', 'contract_type': 'TPP, živnosť', 'contact_email': 'hr@hyperia.sk'}, {'title': 'Product owner', 'place': 'Slovensko', 'salary': 'od 2 000 ,- €', 'contract_type': 'TPP, živnosť', 'contact_email': 'hr@hyperia.sk'}, {'title': 'Lead Frontend developer', 'place': 'Slovensko', 'salary': '2 000 - 4 000 ,- €', 'contract_type': 'TPP, živnosť', 'contact_email': 'hr@hyperia.sk'}, {'title': 'Frontend developer (medior/senior)', 'place': 'Slovensko', 'salary': '2 000 - 4 000 ,- €', 'contract_type': 'TPP, živnosť', 'contact_email': 'hr@hyperia.sk'}, {'title': 'Kimbino senior PHP developer', 'place': 'Slovensko', 'salary': 'od 2 000 ,- €', 'contract_type': 'TPP, živnosť', 'contact_email': 'hr@hyperia.sk'}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.