爬取动态网站表格内容

一、简介

(1)选用requests

(2)数据来源以执法惩戒网站为例网址:http://119.6.84.165:8085/sfgk/webapp/area/cdsfgk/zxxx/zxcj.jsp

目录

一、简介

二、考察网站

三、开始爬虫

四、爬取的数据:

五、数据的过滤和保存


二、考察网站

按f12,f5刷新,点击network如图:

       

    点击每一个请求,查找哪个是你需要的,假如我们是爬取图片和动图的话,我们就看看jpg是不是我们想要的。但是我们的目标是爬取表格,我们就完全没有必要点开.png\.gif\.jpg。重点要关注看.jsp结尾的,首先打开第一个zxcj.jsp,看preview和response都可以,但是preview比较直观,显示的是网页的一些标题、菜单栏之类的。在我们一顿搜索以后找到了ajax.jsp,仔细一看数字信息对上了,如图,所以ajax.jsp就是我们想要

首先是考察from提交的信息:

还有from的信息

三、开始爬虫

(1)找到请求头Headers,From Data的信息,这些参数都是我们要用来发送post请求的,复制到本地备用。通过from种格式传到服务器。我选用了元组的格式。 当data 参数传入一个元组列表。在表单中多个元素使用同一 key 的时候,这种方式尤其有效。现在只能爬取一页,通过进一步考察from的参数可以找到参数currentPage显示当前为第几页。同样post_data里面等待post请求发送时一同传过去。

 

post_data = (('opt', 'getSxbzxrList'), ('zxlx','zxcj'), ('xxlx', 0), ('nd', ''),
             ('dz',''), ('zh', ''), ('fymc', '成都市中级人民法院'), ('bzxr',''),
             ('fydm', 510100),('currentPage',i))

(2)按照标准套路填写,我只爬了4页:

url = 'http://119.6.84.165:8085/sfgk/webapp/area/cdsfgk/zxxx/ajax.jsp'
for page in range(0, 4):
    post_data = (('opt', 'getSxbzxrList'), ('zxlx','zxcj'), ('xxlx', 0), ('nd', ''),
                 ('dz',''), ('zh', ''), ('fymc', '成都市中级人民法院'), ('bzxr',''),
                 ('fydm', 510100),('currentPage',page))
    response = requests.post(url, data=post_data)
    print(response.text)

四、爬取的数据:

 

class getData(object):
    def __init__(self,url):
        self.url = url
        self.html = ''

    def get_html(self):
        for page in range(0, 4):
            post_data = (('opt', 'getSxbzxrList'), ('zxlx','zxcj'), ('xxlx', 0), ('nd', ''),
                         ('dz',''), ('zh', ''), ('fymc', '成都市中级人民法院'), ('bzxr',''),
                         ('fydm', 510100),('currentPage',page))
            self.html += requests.post(self.url, data=post_data).text
        return self.html
gd = getData(URL)
print(gd.get_html())

五、数据的过滤和保存

爬取后的文字解析工作

 

 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一般来说,动态生成的表格是通过 JavaScript 实现的,因此可以使用 `Selenium` 库模拟浏览器行为来获这些表格数据。 下面是一个使用 `Selenium` 和 `BeautifulSoup` 库动态生成表格的示例代码: ```python from selenium import webdriver from bs4 import BeautifulSoup # 使用 Chrome 浏览器 driver = webdriver.Chrome() # 访问页面 driver.get('https://example.com') # 获页面源代码 html = driver.page_source # 使用 BeautifulSoup 解析源代码 soup = BeautifulSoup(html, 'html.parser') # 定位到动态生成的表格 table = driver.find_element_by_xpath('//*[@id="table-id"]') # 获表格内容 table_html = table.get_attribute('outerHTML') # 使用 BeautifulSoup 解析表格内容 table_soup = BeautifulSoup(table_html, 'html.parser') # 处理表格数据 for row in table_soup.find_all('tr'): # 处理每行数据 pass # 关闭浏览器 driver.quit() ``` 在这个示例中,首先使用 `Selenium` 库启动了一个 Chrome 浏览器,并访问了一个网页。然后,使用 `driver.find_element_by_xpath()` 方法定位到动态生成的表格,并使用 `get_attribute()` 方法获表格的 HTML 内容。最后,使用 `BeautifulSoup` 解析表格的 HTML 内容,处理表格数据。 需要注意的是,使用 `Selenium` 库数据可能会比使用其他库慢一些,并且需要安装 Chrome 或 Firefox 等浏览器。另外,为了避免被网站封 IP,建议在数据前先查看网站的 robots.txt 文件,了解网站规则,并设置合理的间隔和请求头。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值