почему мой Beautiful Soup не получает строки запроса ссылок? - PullRequest
0 голосов
/ 11 декабря 2019

Я пытаюсь получить ссылку на тег привязки BeautifulSoup, но он не получает строки запроса! это HTML-фрагмент:

<td class="titleColumn">
  143.
  <a href="/title/tt1302006/?pf_rd_m=A2FGELUUNOQJNL&pf_rd_p=e31d89dd-322d-4646-8962- 
  327b42fe94b1&pf_rd_r=0GYQY7SGFV9AK9CV3019&pf_rd_s=center- 
  1&pf_rd_t=15506&pf_rd_i=top&ref_=chttp_tt_143"
  title="Martin Scorsese (dir.), Robert De Niro, Al Pacino" >The Irishman</a>
    <span class="secondaryInfo">(2019)</span>
</td>

и это ссылка, возвращаемая супом:

https://www.imdb.com/chart/top/?sort=us,desc&mode=simple&page=1/title/tt1302006/

и это мой код:

import requests
from bs4 import BeautifulSoup
add="https://www.imdb.com/chart/top/?sort=us,desc&mode=simple&page=1"
r = requests.get(add)
soup = BeautifulSoup(r.text)
i=1;
for movie in soup.find_all("td",{"class":"titleColumn"}):
    print (add+movie.find('a')['href'])

ссылки в супе тоже не содержат строк запроса

Ответы [ 2 ]

0 голосов
/ 12 декабря 2019

Попробуйте это

import requests
from bs4 import BeautifulSoup
user-agent = 'valid user agent'  #enter a valid user agent here
add="https://www.imdb.com/chart/top/?sort=us,desc&mode=simple&page=1"
r = requests.get(add, headers = {'User-Agent': user-agent})
soup = BeautifulSoup(r.content)
i=1;
for movie in soup.find_all("td",{"class":"titleColumn"}):
    print (add+movie.find('a')['href'])

обратите внимание, что я использовал r.content not r.text . я также считаю, что иногда использование действующего пользовательского агента может быть действительно полезным в таких ситуациях

0 голосов
/ 11 декабря 2019

Иногда веб-сервер реагирует по-другому, если вы не определяете user-agent. Нажмите на следующую ссылку, чтобы узнать больше о пользовательских агентах.

https://www.howtogeek.com/114937/htg-explains-whats-a-browser-user-agent/

Вот как вы можете определить заголовок пользовательского агента в своем коде.

import requests
from bs4 import BeautifulSoup
add="https://www.imdb.com/chart/top/?sort=us,desc&mode=simple&page=1"
r = requests.get(add, headers = {'User-Agent': "user-agent"})
soup = BeautifulSoup(r.text)
i=1;
for movie in soup.find_all("td",{"class":"titleColumn"}):
    print (add+movie.find('a')['href'])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...