python - 如何使用 BeautifulSoup 从期刊版本列表中抓取 pdf 网址?

标签 python python-3.x list web-scraping beautifulsoup

我一直在尝试从已有的期刊卷 URL 中抓取所有 pdf URL。

这是期刊卷列表:

add_url = ['http://www.quimicanova.sbq.org.br/default.asp?ed=1',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=10',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=100',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=101',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=102',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=103',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=104',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=105',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=106',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=107',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=108',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=109',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=11',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=110',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=111',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=112',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=113',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=114',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=115',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=116',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=117',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=118',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=119',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=12',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=120',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=121',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=122',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=123',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=124',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=125',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=126',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=127',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=128',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=129',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=13',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=130',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=131',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=132',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=133',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=134',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=135',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=136',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=137',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=138',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=139',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=14',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=140',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=141',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=142',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=143',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=144',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=145',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=146',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=147',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=148',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=149',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=15',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=150',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=151',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=152',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=153',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=154',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=155',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=156',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=157',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=158',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=159',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=16',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=160',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=161',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=162',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=163',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=164',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=165',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=166',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=167',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=168',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=169',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=17',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=170',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=171',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=172',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=173',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=174',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=175',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=176',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=177',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=178',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=179',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=18',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=180',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=181',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=182',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=183',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=184',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=185',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=186',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=187',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=188',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=189',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=19',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=190',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=191',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=192',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=193',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=194',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=195',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=196',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=197',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=198',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=199',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=2',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=20',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=200',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=201',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=202',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=203',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=204',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=205',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=206',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=207',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=208',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=209',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=21',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=210',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=211',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=212',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=213',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=214',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=215',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=216',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=217',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=218',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=219',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=22',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=220',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=221',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=222',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=223',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=224',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=225',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=227',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=23',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=231',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=232',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=233',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=234',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=235',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=236',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=237',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=238',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=239',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=24',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=240',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=241',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=242',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=243',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=244',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=245',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=246',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=247',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=248',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=249',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=25',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=250',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=251',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=252',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=253',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=254',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=255',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=256',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=258',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=259',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=26',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=260',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=261',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=262',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=263',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=264',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=265',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=266',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=267',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=268',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=269',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=27',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=270',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=271',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=273',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=274',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=275',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=276',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=277',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=278',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=279',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=28',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=280',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=281',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=282',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=283',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=284',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=29',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=3',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=30',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=31',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=32',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=33',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=34',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=35',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=36',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=37',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=38',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=39',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=40',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=41',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=42',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=43',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=44',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=45',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=46',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=47',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=48',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=49',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=5',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=50',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=51',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=52',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=53',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=54',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=55',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=56',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=57',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=58',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=59',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=60',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=61',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=62',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=63',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=64',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=65',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=66',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=67',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=68',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=69',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=70',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=71',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=72',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=73',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=74',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=75',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=76',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=77',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=78',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=79',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=8',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=80',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=81',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=82',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=83',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=84',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=85',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=86',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=87',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=88',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=89',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=9',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=90',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=91',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=92',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=93',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=94',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=95',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=96',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=97',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=98',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=99']

分析每个 url 的 DOM,我注意到所有 pdf 都具有相同的相似性:

audiencia_pdf.asp?aid2

我尝试编写的从每卷中获取所有这些 pdf 的代码如下:

for i in add_url:
    pag = requests.get(i)
    parser = BeautifulSoup(pag.text, "html.parser")
    doi_list = []
    for a in parser.find_all("a", href=True):
        if "audiencia_pdf.asp?aid2" in a["href"]:
            doi_list.append(a["href"])
add_doi = []
for i in doi_list:
    html2 = "http://www.quimicanova.sbq.org.br/" + i
    add_doi.append(html2)

但是为什么我只得到几个 pdf 网址,而不是每个卷网址中的全部?

OUTPUT
['http://www.quimicanova.sbq.org.br/audiencia_pdf.asp?aid2=99&nomeArquivo=v05_n3_00-sumario.pdf',
 'http://www.quimicanova.sbq.org.br/audiencia_pdf.asp?aid2=2778&nomeArquivo=Vol5No3_58_v05_n3_(1).pdf',
 'http://www.quimicanova.sbq.org.br/audiencia_pdf.asp?aid2=2785&nomeArquivo=Vol5No3_60_v05_n3_(2).pdf',
 'http://www.quimicanova.sbq.org.br/audiencia_pdf.asp?aid2=2792&nomeArquivo=Vol5No3_67_v05_n3_(3).pdf',
 'http://www.quimicanova.sbq.org.br/audiencia_pdf.asp?aid2=2802&nomeArquivo=Vol5No3_104_v05_n3_(4).pdf',
 'http://www.quimicanova.sbq.org.br/audiencia_pdf.asp?aid2=2806&nomeArquivo=Vol5No3_106_v05_n3_(5).pdf',
 'http://www.quimicanova.sbq.org.br/audiencia_pdf.asp?aid2=2809&nomeArquivo=Vol5No3_107_v05_n3_editorial.pdf']

我是 Python 新手,因此对于任何明显的错误我提前表示歉意。

最佳答案

我刚刚尝试了您列表中的前两个网址:

import requests
from bs4 import BeautifulSoup
import re

add_url = ['http://www.quimicanova.sbq.org.br/default.asp?ed=1',
 'http://www.quimicanova.sbq.org.br/default.asp?ed=10',]

pat = 'http://www.quimicanova.sbq.org.br/'

add_doi = []
for i in add_url:
    html = requests.get(i).text
    soup = BeautifulSoup(html, "html.parser")
    add_doi.extend([pat+i['href'] for i in soup.find_all('a', href = re.compile(r'audiencia_pdf.asp\?aid2'))])

您会得到 103 个结果。

主要思想是从一个空的结果列表 add_doi 开始,然后通过添加来自抓取的网址的新结果来扩展它。

脚本的核心是最后一行,它查找包含模式 audiencia_pdf.asp\?aid2 的所有 href。

关于python - 如何使用 BeautifulSoup 从期刊版本列表中抓取 pdf 网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60077070/

相关文章:

python - 如何将整数添加到列表中的每个元素?

python - ZODB PersistentLists 是延迟加载的吗?

python - 未知大小的数组

python - 尝试访问同一个表(SQLite)时,两个使用 SqlAlchemy 的程序会发生冲突吗?

python - PyCharm 2016 : How to display result without print command (like console)?

python - 当键对应于列表时仅对字典中的第一个值求和 (Python)

excel - Pandas 可以根据值而不是行隐式确定标题吗?

python - 什么时候可以在 setup.py 脚本中使用 python 后续次要版本更新中的功能?

python - 如何用特定集合中的元素填充 python 中的列表?

java - 如何从类类型映射到列表?