Как использовать несколько URL-адресов из txt файла с помощью BeautifulSoup - PullRequest
1 голос
/ 03 августа 2020

Я новичок в этом, и мой код работает успешно, но только с одним URL-адресом в файле .txt, если я добавлю больше, он выдаст ошибку. Я пробовал несколько методов, которые нашел на этом сайте, но не могу найти тот, который работает. Если бы кто-нибудь мог мне помочь, это было бы здорово.

Моя основная цель состоит в том, чтобы он посмотрел на первый URL-адрес, после его завершения, затем запустил 2-й URL и oop через них.

Вот что у меня сейчас ...

import requests
import lxml.html
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
from dhooks import Webhook, Embed

ua = UserAgent()
header = {'user-agent':ua.random}

with open('urls.txt','r') as file:
    for url in file.readlines():
        result = requests.get(url,headers=header,timeout=3)
        src = result.content
        soup = BeautifulSoup(src, 'lxml')

Ответы [ 2 ]

1 голос
/ 03 августа 2020

В коде происходит слишком много всего. Я не уверен, в чем проблема? Вы можете получить url.txt? Если да, то что он содержит?

В качестве отправной точки попробуйте разделить код на методы.

Например:

import requests
import lxml.html
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
from dhooks import Webhook, Embed

def getReadMe():
    with open('urls.txt','r') as file:
        return file.read()

def getHtml(readMe):
    ua = UserAgent()
    header = {'user-agent':ua.random}
    response = requests.get(readMe,headers=header,timeout=3)
    response.raise_for_status() # throw error for 4xx & 5xx
    return response.content

readMe = getReadMe()
print(readMe) #TODO: does this output text? If so what is it?
html = getHtml(readMe)
soup = BeautifulSoup(src, 'lxml')
# TODO: what is in the response html?
1 голос
/ 03 августа 2020

Надо oop над ними. Этот код предполагает, что в вашем файле есть один URL-адрес на строку:

import requests
import lxml.html
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
from dhooks import Webhook, Embed

ua = UserAgent()
header = {'user-agent':ua.random}

with open('urls.txt','r') as file:
    for url in file.readlines():
        result = requests.get(url,headers=header,timeout=3)
        src = result.content
        soup = BeautifulSoup(src, 'lxml')
...