淋97
2021-03-18 16:10
采纳率: 100%
浏览 100

如何用pandas爬取一个页面上多个链接里的表格(不是分页)?

网址:http://yjj.henan.gov.cn/zwgk/zqyj/

我目前只会爬里面任意一个面的表格,不会一起循环拿下

爬取这里面的每一个HTML表格

请大神帮助,本人纯属小白

以下是写的第一个链接里面的HTML表格

本来想用XPATH获取,实在不会只好放弃

import requests
from lxml import etree
import pandas as pd
import csv
import os
if __name__ == "__main__":
    
    #河南药监局
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
    }
    url="http://yjj.henan.gov.cn/2020/12-30/2069739.html"
 
    response = requests.get(url=url,headers=headers)
    response.encoding='utf-8'
    page_text=response.text
    tree = etree.HTML(page_text)
    #print( page_text)
df = pd.read_html(page_text, encoding='utf-8', header=0)[0]
df_all.shape
df
df.to_csv('河南省药品监督管理局关于15批次抽检不合格药品的通告(2020年第4期).csv', encoding='utf-8', index=False)

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 已采纳

    完整代码

    import requests
    from bs4 import BeautifulSoup
    import time
    import pandas as pd
    import numpy as np
    
    # 请求头
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
    }
    
    url = 'http://yjj.henan.gov.cn/zwgk/zqyj/yp/'
    
    
    # 获取html
    html = requests.get(url,headers=headers)
    # 统一编码
    #html.encoding =html.apparent_encoding
    data = html.text
    # 转换成soup
    soup = BeautifulSoup(data,'lxml')
    
    # 链接
    lianjie = soup.select('body > div.zwxxgk_bd > div.zwxxgk_box > div.scroll_main1 > div.zfxxgk_zdgkc > ul > li > a')
    # 获取连接列表
    lis =[]
    for i in lianjie:
        lis.append(i['href'])
        
    # 汇总数据
    data = pd.DataFrame()
    for urli in lis:
        for table in pd.read_html(urli):
            data = data.append(table)
        time.sleep(2)
    点赞 1 打赏 评论
  • 这个是爬取一个网址的表格的

    url= 'http://yjj.henan.gov.cn/2020/12-30/2069739.html'
    
    
    import pandas as pd
    data = pd.DataFrame()
    for table in pd.read_html(url):
        data = data.append(table)

    如果要爬取多个网址的, 需要看表格是不是都一样, 如果都一样的, 爬虫获取链接,可再增加一个循环. 

    点赞 1 打赏 评论
  • 淋97 2021-03-18 17:12

    点赞 打赏 评论
  • 淋97 2021-03-18 17:13

    这是我读取了所有的链接,并对所有的链接进行了请求,拿到了所有的表格,打印table如下

    点赞 打赏 评论
  • 淋97 2021-03-18 17:14

    点赞 打赏 评论

相关推荐 更多相似问题