2017-02-15 23 views
0

我有一个名为'df'的csv,其中有1列。我有一个标题和10个网址。通过10个url的python数据框循环并从中提取内容(BeautifulSoup)

Col 
"http://www.cnn.com" 
"http://www.fark.com" 
etc 
etc 

这是我的错误代码

import bs4 as bs 
df_link = pd.read_csv('df.csv')  
for link in df_link: 
     x = urllib2.urlopen(link[0]) 
     new = x.read() 
# Code does not even get past here as far as I checked 
     soup = bs.BeautifulSoup(new,"lxml") 
     for text in soup.find_all('a',href = True): 
      text.append((text.get('href'))) 

我得到它说

ValueError: unknown url type: C 

我也得到这个错误的其他变化一样

问题是一个错误,它甚至没有越过

x = urllib2.urlopen(link[0]) 

另一方面,这是工作代码...

url = "http://www.cnn.com" 
x = urllib2.urlopen(url) 
new = x.read() 
soup = bs.BeautifulSoup(new,"lxml") 
for link in soup.find_all('a',href = True): 
    links.append((link.get('href'))) 

回答

0

固定答案

你使用pandas我不知道,所以我说是不是非常有帮助。

您想要使用pandas来执行此操作的方式是遍历行并从中提取信息。以下,而无需摆脱头的应该工作:

import bs4 as bs 
import pandas as pd 
import urllib2 

df_link = pd.read_csv('df.csv') 

for link in df_link.iterrows(): 
    url = link[1]['Col'] 
    x = urllib2.urlopen(url) 
    new = x.read() 
    # Code does not even get past here as far as I checked 
    soup = bs.BeautifulSoup(new,"lxml") 
    for text in soup.find_all('a',href = True): 
     text.append((text.get('href'))) 

原始误导回答以下

它看起来像你的CSV文件的头没有被单独处理,因此在第一次迭代通过df_link,link[0]"Col",这不是有效的URL。

+0

所以我应该删除标题?或者我应该使用链接[1]。我会尝试并更新。 – 0Ajax0

+0

我做了一个假设,你在做什么是错的......我已经更新了我的答案! – daphtdazz

+0

谢谢..一旦我尝试过,我一定会回复你:) – 0Ajax0

相关问题