Pyhton爬取数据的方法总结

297次阅读
没有评论
Pyhton爬取数据的方法总结

1.方式一

1.获取的json

import requests

使用requests,这个第三方的组建来实现。它既可以爬取json文件,也可以爬取网页信息。

适用场景:

  • 一般用于请求有返回json文件或者json字符串的数据的爬取。

  • 可以解析不同网页链接,但是是一类,且具有一定的规律可循的数据。

例如:xxx/123.html xxx/124.html类似于这些网页即可

data = requests.get(url=url, verify=False) if data.status_code == 404: print(url) return "no" str = data.text

这是爬取的json字符串,解析时候很简单。但是有时候会遇到里面包含有一些html的标签,我们可以利用正则表达式,先做一下处理才可以。然后将这个看似可json一样格式的字符串,先转化为dick(字典),然后再将字典转化为json字符串。但是在正真应用的时候一般只转化为字典即可,不需要转化为json,因为json就是字符串,不便于获取其中的key对应的value值。但是字典可以根据dick_name['key_name']来获取key对应的value值。

import re # re 为上面获取的结果 re_h = re.compile('</?w+[^>]*>') res = re_h.sub('', res)

# 转化为字典 dick_data = json.loads(res)

2.获取的是网页源文件

如果获取的是网页的源文件,就需要一个工具BeautifulSoup,来解析网络的源文件。

import requests from bs4 import BeautifulSoup import urllib3

# 忽略https的安全警告 urllib3.disable_warnings()

file = requests.get(url=url, verify=False) soup = BeautifulSoup(file.text, "html.parser")

soup是一个标签元素的集合或者是类。在这里可以通过soup获取标签的属性,或者标签的值,或者是标签点的属性值。 例如:

# 星座和日期 info1 = soup.select('h4')[0] print(info1.text)

2.方式二

使用selenium+webdriver的方式,这是一种无厘头的请求方式,可以本逼真的模仿使用对于浏览器的操作,而实现最大效率的爬取和防止反爬取的爬虫手段。

1.安装weddriver

下载对应的webdriver,放在一个目录下边,最好不要有空格和中文的目录下。

然后在环境变量种进行配置。

C:Program Files (x86)GoogleChromeApplication

将下载好的driver也放在chrome的安装目录下边一份。

2.然后导入对应的工具包。

# 导入selenium的驱动接口 from selenium import webdriver # 导入键盘操作的keys包 from selenium.webdriver.common.keys import Keys # 导入chrome选项 from selenium.webdriver.chrome.options import Options

配置driver的路径:

_CHROME_DRIVER_WIN = 'F:/software/chromedriver.exe'

3.创建driver

# 创建driver def create_driver(): chrome_options = Options() chrome_options.add_argument('–headless') driver = webdriver.Chrome(executable_path=config._CHROME_DRIVER_WIN, options=chrome_options) return driver

根据返回的driver即可获取震哥哥网页的原文档,然后使用bs4进行解析。 soup = BeautifulSoup(driver.page_source, 'html.parser')

4.使用keys

driver.find_element_by_id('next_buttons').click()

例如:以上的点击事件就是一个模仿手动切换网页的过程,可以在切换之后继续进行数据爬取。解决了没有显式返回json数据和点击切换网页时网页链接不变而无法爬取网页数据的问题。

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-27发表,共计1905字。
新手QQ群:570568346,欢迎进群讨论 Python51学习