Почему, когда я пытаюсь почистить ссылки на PDF-файлы на этой веб-странице, я просто получаю пустой список взамен? - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь почистить ссылки на PDF-файлы на этой веб-странице .Тем не менее, я получаю пустой список взамен.Любая помощь в этой проблеме будет высоко ценится.

Вот код, который я использовал:

import requests
from bs4 import BeautifulSoup
import lxml
import csv
url="https://occ.ca/our-publications/"
source=requests.get(url).text
soup=BeautifulSoup(source,'lxml')
match=soup.find_all('div')
print(match)

Ответы [ 3 ]

1 голос
/ 26 сентября 2019

Ниже

import requests
from bs4 import BeautifulSoup

response = source = requests.get('https://occ.ca/our-publications/', headers={'User-Agent': 'Mozilla'})
if response.status_code == 200:
    soup = BeautifulSoup(response.text, 'html')
    pdfs = soup.findAll('div', {"class": "publicationoverlay"})
    links = [pdf.find('a').attrs['href'] for pdf in pdfs]
    print(links)

выход

['https://occ.ca/wp-content/uploads/The-Great-Mosaic-Reviving-Ontarios-Regional-Economies.pdf', 'https://occ.ca/wp-content/uploads/OCC-Letter-in-support-of-the-OPG-Pickering-Nuclear-Nomination.pdf', 'https://occ.ca/wp-content/uploads/OCC-Beverage-Alcohol-Report.pdf', 'https://occ.ca/wp-content/uploads/Industrial-Electricity-Rates.pdf', 'https://occ.ca/wp-content/uploads/OCC-Letter_Strategic-Approach-to-Alcohol-Sales.pdf', 'https://occ.ca/wp-content/uploads/OCC-Submission-Modernizing-Ontarios-Environmental-Assessment-Program.pdf', 'https://occ.ca/wp-content/uploads/OCC-Letter-on-Ticket-Sales-Act.pdf', 'https://occ.ca/wp-content/uploads/2018-2019-Policy-Report-Card.pdf', 'https://occ.ca/wp-content/uploads/Letter-on-Right-to-Repair-May-1.pdf', 'https://occ.ca/wp-content/uploads/Federal-Carbon-Tax-Transparency-Act-2019-OCC.pdf', 'https://occ.ca/wp-content/uploads/Waste-and-Litter-Submission-_-Final.pdf', 'https://occ.ca/wp-content/uploads/Supporting-Ontarios-Budding-Cannabis-Industry.pdf']
1 голос
/ 26 сентября 2019

Страница возвращает 403 (Запрещенный запрос) и страницу с некоторыми ошибками.Если вы добавляете заголовок пользовательского агента, он возвращает 200 (ОК) со страницей, которая вам нужна:

requests.get(url, headers={'User-Agent': 'Mozilla'})
0 голосов
/ 26 сентября 2019

Это потому, что в исходном запросе вы получаете 403 запрещенных запроса.В запросах Python по умолчанию добавляются следующие заголовки:

{
 'User-Agent': 'python-requests/2.21.0', 
 'Accept-Encoding': 'gzip, deflate', 
 'Accept': '*/*', 
 'Connection': 'keep-alive', 
 'Content-Length': '40', 
  'Content-Type': 'application/json'
 }

Некоторые сайты блокируют такие заголовки.Таким образом, вы получаете HTTP-ошибку 403.

source=requests.get(url, headers={'User-Agent': 'Mozilla'})

Добавление этой ошибки решит эту проблему, и вы получите желаемый контент.

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