Чтение URL-адреса из файла Python

не могу прочитать URL-адрес в txt-файле. Я хочу прочитать и открыть URL-адреса в txt один за другим, и я хочу получить заголовок заголовка с регулярным выражением из источника URL-адресов. Сообщения об ошибках:

Трассировка (последний последний вызов): Файл «Mypy.py», строка 14, в UrlsOpen = urllib2.urlopen(listSplit) Файл «/usr/lib/python2.7/urllib2.py», строка 154, в urlopen return opener .open(url, data, timeout) Файл "/usr/lib/python2.7/urllib2.py", строка 420, в open req.timeout = 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()

person M.YILMAZ    schedule 21.10.2017    source источник
comment
Можете ли вы добавить пример вашего Url.txt содержания?   -  person fievel    schedule 22.10.2017
comment
@fievel My Url.txt i.stack.imgur.com/s81Mt.png   -  person M.YILMAZ    schedule 22.10.2017
comment
Можете ли вы скопировать содержимое файла URL.txt и вставить его в свой вопрос, используя форматирование кода? Будет намного проще помочь вам отладить   -  person PeterH    schedule 22.10.2017


Ответы (1)


Когда вы вызываете urllib2.urlopen(listSplit) listSplit, это список, когда он должен быть строкой или объектом запроса< /а>. Это простое исправление для перебора listSplit вместо передачи всего списка в urlopen.

Также re.findall() вернет список для каждого искомого ReadSource. Вы можете справиться с этим несколькими способами:

Я решил справиться с этим, просто составив список списков

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

и перебирая оба списка. Это позволяет вам делать что-то конкретное для каждого списка 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()
person PeterH    schedule 21.10.2017
comment
Трассировка (последний последний вызов): Файл Mypy.py, строка 14, в ‹module› UrlsOpen = urllib2.urlopen(url) Файл /usr/lib/python2.7/urllib2.py, строка 154, в urlopen return opener. open(url, data, timeout) File /usr/lib/python2.7/urllib2.py, строка 427, in open req = meth(req) File /usr/lib/python2.7/urllib2.py, строка 1126, в do_request_ поднять URLError('узел не указан') urllib2.URLError: ‹ошибка urlopen, узел не указан› - person M.YILMAZ; 22.10.2017
comment
Я обновил код, чтобы он работал с новыми ссылками .splitlines() и исправил ошибку кодирования link.encode('utf-8'). Попробуйте новый код. - person PeterH; 22.10.2017