这是我希望能帮助您的代码的基本示例:
from bs4 import BeautifulSoup
import requests
import csv
with open('URLs.csv', newline='') as f_urls:
csv_urls = csv.reader(f_urls)
for line in csv_urls:
page = requests.get(line[0])
soup = BeautifulSoup(page.text, 'html.parser')
for results in soup.findAll('a', {'data-tn-element':'jobTitle'}):
if "Scientist" in results:
continue # Won't this continue just loop back to the for results in...loop, not the for line in csv_urls loop?
else:
print(results.text)
...其中CSV文件中的URL为:
https://www.indeed.ca/jobs?q=data+scientist%2C+data+analyst%2C+python&l=Canada&jt=fulltime&start=20
https://www.indeed.ca/jobs?q=data+scientist,+data+analyst,+python&l=Canada&jt=fulltime
...因此,在此代码的上下文中,它首先读取第一个URL,然后找到该页面上的所有职位。如果抓取的表中的任何职位包含单词“ Scientist”(其中的任何一个),则应继续回到“ for csv_urls:中的行”行,然后从列表中的下一个URL重新开始。如果它们不包含单词,则打印结果。
这是一个基本示例,不是我在实际代码中使用的示例,但是应用程序是相同的。我认为问题可能出在Continue的放置位置,因为我需要它跳回到“ csv_urls:中的for行”循环。
希望对于被投资者来说,这更像是“热门话题”。谢谢吗?
答案 0 :(得分:1)
您必须致电.text
或它不匹配
for line in csv_urls:
page = requests.get(line[0])
soup = BeautifulSoup(page.text, 'html.parser')
for results in soup.findAll('a', {'data-tn-element':'jobTitle'}):
if "Scientist" in results.text:
break
# stop this loop, continue to loop "csv_urls"
# even the rest has no "Scientist"
else:
print(results.text)