2017-10-21 18 views
1

はtxtファイルのURLを読み取ることができません 私はtxtのURLアドレスを1つずつ読み込んで開きたいので、urlアドレスのソースからregexでタイトルのタイトルを取得したい エラーメッセージ:ファイルPythonからURLを読む

Traceback (most recent call last): File "Mypy.py", line 14, in UrlsOpen = urllib2.urlopen(listSplit) File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen return opener.open(url, data, timeout) File "/usr/lib/python2.7/urllib2.py", line 420, in open req.timeout = timeout AttributeError: 'list' object has no attribute 'timeout'

Mypy.py

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import re 
import requests 
import urllib2 
import threading 

UrlListFile = open("Url.txt","r") 
UrlListRead = UrlListFile.read() 
UrlListFile.close() 
listSplit = UrlListRead.split('\r\n') 


    UrlsOpen = urllib2.urlopen(listSplit) 
    ReadSource = UrlsOpen.read().decode('utf-8') 
    regex = '<title.*?>(.+?)</title>' 
    comp = re.compile(regex) 
    links = re.findall(comp,ReadSource) 
    for i in links: 
     SaveDataFiles = open("SaveDataMyFile.txt","w") 
     SaveDataFiles.write(i) 
    SaveDataFiles.close() 
+0

あなたは 'Url.txt'コンテンツの例を追加できます? – fievel

+0

@fievel My Url.txt https://i.stack.imgur.com/s81Mt.png –

+0

URL.txtファイルの内容をコピーして、コードフォーマットを使用して質問に貼り付けることはできますか?あなたがデバッグするのをもっと簡単にするでしょう – PeterH

答えて

0

あなたがurllib2.urlopen(listSplit) listSplitを呼び出していることがstring or request objectにする必要があるリストです。リスト全体をurlopenに渡す代わりに、listSplitを反復処理するのは簡単な修正です。

また、re.findall()は、検索された各ReadSourceのリストを返します。あなたは、この方法はいくつか処理できます。

私はちょうどリスト

websites = [ [link, link], [link], [link, link, link]

のリストを作成し、両方のリストを反復処理によってそれを処理することを選びました。これにより、各WebサイトからのURLのリストごとに個別の処理を行うことができるようになります(別のファイルに置くなど...)。

また、だけではなく、その後のリンクが含まれている別のリストのリンクを含むようにwebsiteリストを平らにできます

links = [link, link, link, link]

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import re 
import urllib2 
from pprint import pprint 

UrlListFile = open("Url.txt", "r") 
UrlListRead = UrlListFile.read() 
UrlListFile.close() 
listSplit = UrlListRead.splitlines() 
pprint(listSplit) 
regex = '<title.*?>(.+?)</title>' 
comp = re.compile(regex) 
websites = [] 
for url in listSplit: 
    UrlsOpen = urllib2.urlopen(url) 
    ReadSource = UrlsOpen.read().decode('utf-8') 
    websites.append(re.findall(comp, ReadSource)) 

with open("SaveDataMyFile.txt", "w") as SaveDataFiles: 
    for website in websites: 
     for link in website: 
      pprint(link) 
      SaveDataFiles.write(link.encode('utf-8')) 
    SaveDataFiles.close() 
+0

トレースバック(最新の最後の呼び出し): ファイル "Mypy.py" 14行目 UrlsOpen = urllib2.urlopen(url) ファイル "/ usr/lib/python2.7/urllib2.py "、154行目、urlopen内 return opener.open(url、data、timeout) ファイル" /usr/lib/python2.7/urllib2.py "、行427、オープン中 req = meth(req) ファイル "/usr/lib/python2.7/urllib2.py"、1126行目、do_request_ URLエラー( 'ホストが指定されていません') urllib2.URLError:

+0

より多くの新しいリンク '.splitlines()'で動作し、エンコーディングエラー 'link.encode( 'utf-8')'を修正するようにコードを更新しました。新しいコードを試してみてください。 – PeterH