[英]Reading url from file Python
无法读取txt文件中的url,我想一一读取并打开txt中的url地址,并且我想从url地址的来源中获取带有regex的标题的标题错误消息:
追溯(最近一次通话最近):UrlsOpen中的文件“ Mypy.py”,第14行= urllib2.urlopen(listSplit),URLopen中的文件“ /usr/lib/python2.7/urllib2.py”,第154行,返回打开程序.open(URL,数据,超时)文件“ /usr/lib/python2.7/urllib2.py”,行420,在open req.timeout =超时中AttributeError:'list'对象没有属性'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()
当您调用urllib2.urlopen(listSplit)
listSplit是一个列表,当它需要为字符串或请求对象时 。 这是一个简单的修复,可以遍历listSplit而不是将整个列表传递给urlopen。
re.findall()
还将为搜索到的每个ReadSource返回一个列表。 您可以通过以下两种方式处理此问题:
我选择仅通过列出列表来处理它
websites = [ [link, link], [link], [link, link, link]
并遍历两个列表。 这样一来,您就可以针对每个网站的网址列表执行特定的操作(放入不同的文件等)。
您还可以展平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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.