【发布时间】:2019-12-05 06:24:15
【问题描述】:
我已经开始使用 pandas 和网络抓取,代码似乎可以工作,并且当我运行代码时,所有结果行都显示在终端中,但是当我将其导出到 csv 时,它只显示一半的结果行。我正在遍历 url 可能与此有关,但是我不确定为什么结果仍然在终端中正确显示。
import pandas as pd
import requests
import bs4
from bs4 import BeautifulSoup
urls = ['https://www.indeed.co.uk/jobs?q=Scrum+master&l=London', 'https://www.indeed.co.uk/jobs?q=Scrum+master&l=London&start=10']
for url in urls:
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
job_results = soup.find(id='resultsCol')
jobs = job_results.find_all(class_='jobsearch-SerpJobCard')
titles = [job.find(class_='jobtitle').get_text() for job in jobs]
descriptions = [job.find('div', attrs={'class': 'summary'}).get_text() for job in jobs]
jobs_filtered = pd.DataFrame(
{
'title' : titles,
'description' : descriptions,
})
print(jobs_filtered)
jobs_filtered.to_csv('jobs_filtered11.csv')
【问题讨论】:
-
当您说只有一半的数据在
.csv中时,您的意思是只有一个站点的数据吗?我问是因为您将所有迭代的结果保存到相同的文件名,这意味着您正在覆盖数据。 -
是的,来自一个 url 的数据,可能这就是问题所在,我该如何解决这个问题,以便将所有内容都添加到同一个文件中?真正让我失望的是所有结果都出现在终端中。
-
是的,它每次都会被打印出来,但是因为你正在覆盖文件,所以你只能从最后一次迭代中获取数据
标签: python pandas dataframe web-scraping beautifulsoup