繁体   English   中英

从文件Python读取URL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM