程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Webscraping:从带有分页的网站下载 pdf 文件。它不会进入每一页

发布于2022-08-11 09:31     阅读(926)     评论(0)     点赞(16)     收藏(3)


我正在尝试从具有分页(从 1 到 7)的 [此网页][1] 下载 pdf 文件。我制作的代码只下载前两页的 pdf 文件,直到第七页才能完成。这是代码:

import os

def extract_url_pdf(input_url,folder_path=os.getcwd()):

import os
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup
import pandas as pd
import datetime

url = input_url

#If there is no such folder, the script will create one automatically
folder_location = 'D:/Datos/Ordenanzas municipales/Municipalidad de Lima'
if not os.path.exists(folder_location):os.mkdir(folder_location)

response = requests.get(url)
soup= BeautifulSoup(response.text, "html.parser") 

link_text=list()
link_href=list()
link_file=list()

counter=0
while counter < 8:
    
    postings=soup.select("h3 a")

    for link in postings:
    
        filename = os.path.join(folder_location,link['href'].split('/')[-1])
        with open(filename, 'wb') as f:
            f.write(requests.get(urljoin(url,link['href'])).content)
        
        link_text.append(str(link.text))
    
        link_href.append(link['href'])

        link_file.append(link['href'].split('/')[-1])
                
        print(counter, "-Files Extracted from URL named ",link['href'].split('/')[-1])
    
    next_page = 'http://www.transparencia.munlima.gob.pe'+soup.find('a', class_ = 'pagenav').get('href')

    page = requests.get(next_page)
    soup = BeautifulSoup(page.text, 'lxml')
    counter += 1

extract_url_pdf(input_url="http://www.transparencia.munlima.gob.pe/gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/cat_view/14-documentos-mml/1-disposiciones-emitidas/77-resoluciones-ordenanzas/135-ordenanzas-municipales/2205-ordenanzas-municipales-2022?start=0")

我还尝试了另一种代码,我只能用它下载第一页的 pdf。应该注意的是,这些是没有 .pdf 扩展名的 pdf 文件。因此,它们被下载为没有扩展名的文件。这不是问题,因为我以后可以用另一种方式解决这个问题。

import os

def extract_url_pdf(input_url,folder_path=os.getcwd()):
import os
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup
import pandas as pd
import datetime

url = input_url

#If there is no such folder, the script will create one automatically
folder_location = 'D:/Datos/Ordenanzas municipales/Municipalidad de Lima'
if not os.path.exists(folder_location):os.mkdir(folder_location)

response = requests.get(url)
soup= BeautifulSoup(response.text, "html.parser") 

link_text=list()
link_href=list()
link_file=list()

counter=0

    
for link in soup.select("h3 a"):
#Name the pdf files using the last portion of each link which are unique in this case
    
    filename = os.path.join(folder_location,link['href'].split('/')[-1])
    with open(filename, 'wb') as f:
       f.write(requests.get(urljoin(url,link['href'])).content)
        
    link_text.append(str(link.text))
    
    link_href.append(link['href'])

    link_file.append(link['href'].split('/')[-1])
        
    counter+=1
    
    print(counter, "-Files Extracted from URL named ",link['href'].split('/')[-1])


for i in range (0,201,10):
    i=0
    link='http://www.transparencia.munlima.gob.pe/gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/cat_view/14-documentos-mml/1-disposiciones-emitidas/77-resoluciones-ordenanzas/135-ordenanzas-municipales/2205-ordenanzas-municipales-2022?start="+str(i)+"'
    if i > 80:
        break
    extract_url_pdf(input_url=link)

解决方案


可能是网站有问题,有些页面时不时出现空白页。有些工作没有标题,有些则没有。也许这会给它带来很大的负担并且会出现滞后,在第二种情况下,这里有一个例子:

import requests
from bs4 import BeautifulSoup


headers = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}


for page in range(0, 70, 10):
    url = f"http://www.transparencia.munlima.gob.pe/gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/cat_view/14-documentos-mml/1-disposiciones-emitidas/77-resoluciones-ordenanzas/135-ordenanzas-municipales/2205-ordenanzas-municipales-2022?start={page}"
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'lxml')
    for href in [link.get('href') for link in soup.find_all('a') if 'Descargar' in link.get_text()]:
        with open(href.split('/')[-1] + '.pdf', 'wb') as f:
            f.write(requests.get('http://www.transparencia.munlima.gob.pe' + href).content)
            print(f'Page:{page}, {href} was downloaded')

输出:

Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536863-ordenanza-municipal-n°-2481-06-07-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536803-ordenanza-municipal-n°-2480-22-06-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536802-ordenanza-municipal-n°-2479-22-06-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536801-ordenanza-municipal-n°-2478-22-06-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536704-ord-n°-2477-10-06-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536661-ordenanza-municipal-n°-2476-31-05-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536660-ordenanza-municipal-n°-2475-31-05-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536659-ordenanza-municipal-n°-2474-31-05-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536658-ordenanza-municipal-n°-2473-31-05-2022 was downloaded
Page:0, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536657-ordenanza-municipal-n°-2472-31-05-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536656-ordenanza-municipal-n°-2471-31-05-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536655-ordenanza-municipal-n°-2470-31-05-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536654-ordenanza-municipal-n°-2469-31-05-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536653-ordenanza-municipal-n°-2468-31-05-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536693-ordenanza-municipal-n°-2467-04-06-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536611-ordenanza-municipal-n°-2467-27-05-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536692-fe-de-erratas-ordenanza-municipal-n°-2466-25-05-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536564-ordenanza-municipal-n°-2466-18-05-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536423-ordenanza-municipal-n°-2465-21-04-2022 was downloaded
Page:10, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536422-ordenanza-municipal-n°-2464-21-04-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536421-ordenanza-municipal-n°-2463-21-04-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536420-ordenanza-municipal-n°-2462-21-04-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536419-ordenanza-municipal-n°-2461-21-04-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536418-ordenanza-municipal-n°-2460-21-04-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536363-ordenanza-municipal-n°-2459-07-04-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536341-ordenanza-municipal-n°-2458-31-03-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536314-ordenanza-municipal-n°-2457-24-03-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536313-ordenanza-municipal-n°-2456-24-03-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536216-ordenanza-municipal-n°-2455-10-03-2022 was downloaded
Page:20, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536215-ordenanza-municipal-n°-2454-10-03-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536130-ordenanza-municipal-n°-2453-17-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536124-ordenanza-municipal-n°-2452-17-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536123-ordenanza-municipal-n°-2451-17-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536097-ordenanza-municipal-n°-2450-10-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536096-ordenanza-municipal-n°-2449-10-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536095-ordenanza-municipal-n°-2448-10-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536094-ordenanza-municipal-n°-2447-10-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536093-ordenanza-municipal-n°-2446-10-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536092-ordenanza-municipal-n°-2445-10-02-2022 was downloaded
Page:30, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536091-ordenanza-municipal-n°-2444-10-02-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536090-ordenanza-municipal-n°-2443-10-02-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536089-ordenanza-municipal-n°-2442-10-02-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536088-ordenanza-municipal-n°-2441-10-02-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536087-ordenanza-municipal-n°-2440-10-02-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536086-ordenanza-municipal-n°-2439-10-02-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536085-ordenanza-municipal-n°-2438-10-02-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536019-ordenanza-municipal-n°-2437-27-01-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536018-ordenanza-municipal-n°-2436-27-01-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536017-ordenanza-municipal-n°-2435-27-01-2022 was downloaded
Page:40, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536016-ordenanza-municipal-n°-2434-27-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536015-ordenanza-municipal-n°-2433-27-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536014-ordenanza-municipal-n°-2432-27-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536013-ordenanza-municipal-n°-2431-27-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447536012-ordenanza-municipal-n°-2430-27-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447535959-ordenanza-municipal-n°-2429-20-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447535958-ordenanza-municipal-n°-2428-20-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447535957-ordenanza-municipal-n°-2427-20-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447535955-ordenanza-municipal-n°-2426-20-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447535956-ordenanza-municipal-n°-2425-20-01-2022 was downloaded
Page:50, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447535954-ordenanza-municipal-n°-2424-20-01-2022 was downloaded
Page:60, /gobierno-abierto-municipal/transparencia/mml/datos-generales/disposiciones-emitidas-1/ordenanzas-municipales/doc_download/447535953-ordenanza-municipal-n°-2423-20-01-2022 was downloaded


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1659351/a8a2b62c3834332c6e86/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏

评论内容:(最多支持255个字符)