网址: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)
完整代码
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)
这个是爬取一个网址的表格的
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)
如果要爬取多个网址的, 需要看表格是不是都一样, 如果都一样的, 爬虫获取链接,可再增加一个循环.
这是我读取了所有的链接,并对所有的链接进行了请求,拿到了所有的表格,打印table如下