【发布时间】:2018-09-22 00:37:00
【问题描述】:
我正在使用 csv 文件中的 url 列表从 html 表中抓取和提取数据。当表格中不存在“style3”时,我想停止浏览网址。 我创建了一个函数,如果它不存在,它将返回 false,但我对如何实际实现它感到困惑。
任何关于解决方案或文献方向的建议都会有很大帮助,因为我无法在这里找到任何东西来帮助我解决这个问题。
我已经包含了 1 个带有 'style3' 的 url 和 1 个没有。感谢您的任何帮助。
http://www.wvlabor.com/new_searches/contractor_RESULTS.cfm?wvnumber=WV057808&contractor_name=&dba=&city_name=&County=&Submit3=Search+Contractors http://www.wvlabor.com/new_searches/contractor_RESULTS.cfm?wvnumber=WV057924&contractor_name=&dba=&city_name=&County=&Submit3=Search+Contractors
import csv
from urllib.request import urlopen
import pandas as pd
from bs4 import BeautifulSoup as BS
def license_exists(soup):
contents = []
with open('WV_urls.csv','r') as csvf:
urls = csv.reader(csvf)
for url in urls:
if soup(class_='style3'):
return True
else:
return False
contents = []
more = True
while more:
df = pd.DataFrame(columns=['WV Number', 'Company', 'DBA', 'Address', 'City', 'State', 'Zip','County', 'Phone', 'Classification*', 'Expires']) #initialize the data frame with columns
with open('WV_urls.csv','r') as csvf: # Open file in read mode
urls = csv.reader(csvf)
for url in urls:
contents.append(url) # Add each url to list contents
for url in contents: # Parse through each url in the list.
page = urlopen(url[0]).read()
df1, header = pd.read_html(page,header=0)#reading with header
more = license_exists(?????)
df=df.append(df1) # append to dataframe
df.to_csv('WV_Licenses_Daily.csv', index=False)
【问题讨论】:
-
查看页面/代码,您似乎正在搜索特定的
wvnumber。是否存在每页可能有多个结果的情况(如果存在特定的wvnumber)? -
不。每个网址只有 1 条记录。
-
当您说要停止浏览网址时,您是想跳出循环(并且不查找任何可能出现在该循环之后的网址)还是跳过尝试添加一个空行到您的数据框并继续到任何后续网址?
-
而 license_exists() == false:
-
跳出循环。最终目标是打破循环,通过电子邮件发送我收集的信息,然后从 csv 中删除我通过的网址
标签: python pandas dataframe beautifulsoup