python - 具有多个页面但来自单个 url 的抓取表
问题描述
我正在尝试从网站 KKP 抓取数据。这些表存在一些页面,但所有页面都使用相同的 url。我对网络抓取数据非常陌生。我目前正在使用 selenium 来抓取表格,但它只包含一个第一页,但我想抓取所有页面。有些日子我总是尝试通过谷歌搜索并在 youtube 上查看教程,但我仍然卡住了。链接和我当前的代码如下。如果您使用 BeautifulSoup 来抓取数据,我没有问题。我希望有一个人可以帮助我。谢谢
网站: http: //www.ppk-kp3k.kkp.go.id/direktori-pulau/index.php/public_c/propinsi/11
from selenium import webdriver
from kora.selenium import wd
wd.get("http://www.ppk-kp3k.kkp.go.id/direktori-pulau/index.php/public_c/propinsi/11")
wd.maximize_window()
with open('pulau_scrapping_aceh_lengkap4.csv','w') as file:
file.write('Pulau; Provinsi; Kabupaten \n')
pulau = wd.find_elements_by_xpath('/html/body/div[3]/div/div/table/tbody/tr/td[1]')
provinsi = wd.find_elements_by_xpath('//*[@id="DataTables_Table_0"]/tbody/tr/td[2]')
kabupaten = wd.find_elements_by_xpath('//*[@id="DataTables_Table_0"]/tbody/tr/td[3]')
row_data = []
for k in range(6):
with open('pulau_scrapping_aceh_lengkap4.csv','a') as file:
for i in range(len(pulau)):
file.write(pulau[i].text + ';' + provinsi[i].text + ';' + kabupaten[i].text + '\n')
next = wd.find_element_by_xpath('//*[@id="DataTables_Table_0_last"]')
next.click()
file.close()
wd.close()
解决方案
整个表格都在HTML
源代码中,因此您可以使用它来获取它(并且不需要selenium
):
import pandas as pd
import requests
link = 'http://www.ppk-kp3k.kkp.go.id/direktori-pulau/index.php/public_c/propinsi/11'
pd = pd.read_html(requests.get(link).text, flavor="bs4")[-1]
print(pd)
输出:
Pulau Propinsi Kabupaten Kecamatan Kependudukan
0 SIMEULUE CUT ACEH KABUPATEN SIMEULUE NaN Tidak Ada
1 SALAUT BESAR ACEH KABUPATEN SIMEULUE NaN Tidak Ada
2 RAYA ACEH KABUPATEN ACEH JAYA NaN Tidak Ada
3 RUSA ACEH KABUPATEN ACEH BESAR NaN Tidak Ada
4 BENGGALA ACEH KOTA SABANG NaN Tidak Ada
.. ... ... ... ... ...
256 Kualakepeng Mbelen ACEH KOTA SUBULUSSALAM NaN Tidak Ada
257 Tanahtumbuh ACEH KOTA SUBULUSSALAM NaN Tidak Ada
258 Tualang Kedep ACEH KOTA SUBULUSSALAM NaN Tidak Ada
259 Tualang Mbelen ACEH KOTA SUBULUSSALAM NaN Tidak Ada
260 NaN NaN NaN NaN NaN
[261 rows x 5 columns]
推荐阅读
- angular - 是否可以在微信小程序中使用现有的 PWA?
- c# - C# MongoDB 2. 查找比较其字段的文档:不支持的过滤器
- django - ModelAdmin 中的 get_form 导致 TypeError
- android - 如何在 TabLayout tabIndicator 和 TabItem 文本之间添加自定义填充?
- java - 使用矩阵和重复平方计算斐波那契数
- c++ - 实现字符串到整数查找表的快速且可维护的方法
- python - 在python中对包含字符串和数字的元组进行排序
- java - Can someone check what is wrong with my xor neural network code
- c++ - CMake - 库目标依赖项
- javascript - iMacros - 删除字符串中的最后一个字符