簡體   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