【发布时间】:2019-07-24 18:36:29
【问题描述】:
我在我的代码中遇到问题,该问题与一页完美配合,但是当我尝试解析所有 28 页时,它不会解析 27 页,而是只解析第一个。
主要思想是从提到的 url 中解析数据,总共有 28 个页面,我为它制作了 for 循环,以便从所有页面中进行 BS 解析。但是,它只解析第一页,而不解析其他页面。
我想听听您的建议和使其发挥作用的方法。
代码:
from bs4 import BeautifulSoup as bs
import requests
import pandas as pd
for t in range(28):
url = "https://boss.az/vacancies?action=index&controller=vacancies&only_path=true&page={}&type=vacancies".format(t)
r = requests.get(url)
soup = bs(r.content, 'html.parser')
titles = [i.text for i in soup.select('.results-i-title')]
#print(titles)
companies = [i.text for i in soup.select('.results-i-company')]
#print(companies)
summaries = [i.text for i in soup.select('.results-i-summary')]
df = pd.DataFrame(list(zip(titles, companies, summaries)), columns = ['Title', 'Company', 'Summary'])
df.to_csv(r'Data.csv', sep=',', encoding='utf-8-sig',index = False )
【问题讨论】:
-
不是 100% 清楚您要做什么,但您不应该扩展
titles、companies和summaries而不是重新分配它们吗? -
主要思想是从提到的 url 中解析数据,总共有 28 页,我为它制作了 for 循环,以便从所有页面中进行 BS 解析。但是,它只解析第一页,而不解析其他页面。
-
对,所以大概,您想连接从每个
bs()调用中提取的结果。但是你没有组合结果,你正在重置它们。事实上,您应该只看到最后一个页面的结果,而不是第一个页面。 -
谢谢你,弗兰克的评论,我真的很感激。之前没注意,多亏了你和@Code Different,我的问题已经解决了,可以解析网站上的数据了。
标签: python pandas parsing beautifulsoup