我是Python的新手,我正在从事一项网络自动化工作,抓取一些数据并帮助我进行分析。
所以,我在一个数据帧中有这些数据,比如:
Name site data1 site data2 SiteID
name1 23 ins 43 vid 082820399
name2 67 ins 3 vid 996820344
name3 55 ins 67 vid 201988493
使用selenium刮取数据,但我需要的是制作一个函数,为我的函数选择SiteID列中的每一行,在其中运行刮擦。
一开始我尝试过制作for切片,尝试过使用".iterrows"one_answers".iteritems",尝试过在for切片中使用"apply",但都不起作用。
出现的是页面打开,但没有任何URL。
我的代码是这样的:
df = pd.read_csv('channel_data.csv')
df1 = df['SiteID']
class Channel_DSO:
for links, row in df1.iterrows():
def canais_dados():
driver = webdriver.Chrome(
'C:/chromedriver_win32_3/chromedriver.exe')
for link in links:
driver.get('{}/site?param=0&flow'.format(links))
content = driver.page_source.encode ('utf-8').strip()
soup = BeautifulSoup (content, 'lxml')
site_detail = []
detail = soup.find_all('a', id='site-detail')
for detail in details:
site_detail.append(details.text)
link_detail = []
l_details = soup.find_all('span', class_='link-detail-text')
for l_detail in l_details:
link_detail.append(l_details.text)
sites_data = []
for detail, l_detail in zip(site_detail, link_detail):
sites_data.append(
{'Site': detail, 'L detail': l_detail})
driver.quit()
我不知道该怎么办,我在网上搜索任何回复。
很抱歉,如果这个问题太难回答,如果我说错了什么。。。
希望有人能帮我…谢谢!!
编辑:我写的是scrape,而不是scrape(谢谢barny(;我还看到我的代码中的另一个错误:;df1=df[‘站点ID’]";我已经选择了另一个专栏,但它不会影响结果。很抱歉,不想打扰你。
我找到了一个解决方案。。。只是在类中创建另一个"def"函数。
我的解决方案运行良好,可以迭代数据帧中的每一行。
工作原理:
df = pd.read_csv('channel_data.csv')
df1 = df['SiteID']
class __init__:
def canais_dados():
driver = webdriver.Chrome(
'C:/chromedriver_win32_3/chromedriver.exe')
for link in links:
driver.get('{}/site?param=0&flow'.format(links))
content = driver.page_source.encode ('utf-8').strip()
soup = BeautifulSoup (content, 'lxml')
site_detail = []
detail = soup.find_all('a', id='site-detail')
for detail in details:
site_detail.append(details.text)
link_detail = []
l_details = soup.find_all('span', class_='link-detail-text')
for l_detail in l_details:
link_detail.append(l_details.text)
sites_data = []
for detail, l_detail in zip(site_detail, link_detail):
sites_data.append(
{'Site': detail, 'L detail': l_detail})
driver.quit()
def links_loop:
for links in links:
loop = next(links.iteritem[i+1])
if loop == False:
links_loop.exit()
elif loop == True:
exec(canais_dados)
它运行良好。感谢所有人,并对diturb或任何错误表示歉意。