2017-08-07 18 views
1

私は現在、このコードを実行して記事のURLリンクをcsvファイルにスクレイプし、これらのURLにアクセスして(csvファイル内に)それぞれの情報をテキストファイルにスクラップします。ValueError:不明なURLの種類:リンク

私はcsvファイルへのリンクをこすりすることですが、私はより詳細な情報を(テキストファイルも作成されていない)こすりするcsvファイルにアクセスすることができないんだと、私はとValueError

import csv 
from lxml import html 
from time import sleep 
import requests 
from bs4 import BeautifulSoup 
import urllib 
import urllib2 
from random import randint 

outputFile = open("All_links.csv", r'wb') 
fileWriter = csv.writer(outputFile) 

fileWriter.writerow(["Link"]) 
#fileWriter.writerow(["Sl. No.", "Page Number", "Link"]) 

url1 = 'https://www.marketingweek.com/page/' 
url2 = '/?s=big+data' 

sl_no = 1 

#iterating from 1st page through 361th page 
for i in xrange(1, 361): 

    #generating final url to be scraped using page number 
    url = url1 + str(i) + url2 

    #Fetching page 
    response = requests.get(url) 
    sleep(randint(10, 20)) 
    #using html parser 
    htmlContent = html.fromstring(response.content) 

    #Capturing all 'a' tags under h2 tag with class 'hentry-title entry-title' 
    page_links = htmlContent.xpath('//div[@class = "archive-constraint"]//h2[@class = "hentry-title entry-title"]/a/@href') 
    for page_link in page_links: 
     print page_link 
     fileWriter.writerow([page_link]) 
     sl_no += 1 

with open('All_links.csv', 'rb') as f1: 
    f1.seek(0) 
    reader = csv.reader(f1) 

    for line in reader: 
     url = line[0]  
     soup = BeautifulSoup(urllib2.urlopen(url)) 


     with open('LinksOutput.txt', 'a+') as f2: 
      for tag in soup.find_all('p'): 
       f2.write(tag.text.encode('utf-8') + '\n') 

遭遇これは私が遭遇するエラーです:

File "c:\users\rrj17\documents\visual studio 2015\Projects\webscrape\webscrape\webscrape.py", line 47, in <module> 
    soup = BeautifulSoup(urllib2.urlopen(url)) 
    File "C:\Python27\lib\urllib2.py", line 154, in urlopen 
    return opener.open(url, data, timeout) 
    File "C:\Python27\lib\urllib2.py", line 421, in open 
    protocol = req.get_type() 
    File "C:\Python27\lib\urllib2.py", line 283, in get_type 
    raise ValueError, "unknown url type: %s" % self.__original 
ValueError: unknown url type: Link 

これについての助けを要求します。

答えて

2

csvファイルの最初の行をスキップしてみてください。無関係にヘッダーを解析しようとしている可能性があります。

with open('All_links.csv', 'rb') as f1: 
    reader = csv.reader(f1) 
    next(reader) # read the header and send it to oblivion 

    for line in reader: # NOW start reading 
     ... 

f1が自動的に読み取りモードでファイルの先頭を指すので、あなたはまた、f1.seek(0)を必要としません。

+0

問題が解決しました。ありがとう、トン! :) – Rrj17

+0

@ Rrj17あなたはこれをマークしていません...何か間違っていますか? –

+1

間違っています。混乱のために申し訳ありません。 – Rrj17

関連する問題