python3.8使用requests_python3.8通过python selenium+(requests+BeautifulSoup)对页面进行彻底爬取...

首先说一下requests+BeautifulSoup对页面的解析 安装requests和BeautifulSoup    安装步骤我在这里就不说了

1.通过requests来读取网页信息  可以通过状态码来判断是否成功。

这种requests是最基本的,有的网页可能会需要cookie、表单提交登录,还有些网页需要权限的user-agent、通过IP来限制。这些可以在百度上查一下。https://www.cnblogs.com/wyl-0120/p/10358086.html

2.通过BeautifulSoup来自定义解析网页

soup = BeautifulSoup(response_data.text, "html.parser")

2.1 把用requests读取到的网页文件转化成BeautifulSoup格式

url_list= soup.find_all("a", href=re.compile('%s' % (www.baidu.com))

2.2 通过find_all来查找a标签中href属性包括www.baidu.com的标签出来(当然BeautifulSoup还有其他的查找方法,但是本人感觉用的地方不多)

得到的是一个bs4.element.Tag的列表,然后遍历列表。获取每个Tag的其他属性

r = re.findall(r"> (.*?)", responseData.text, re.S)

也可以通过这种根据前后标记来获取数据,这种方法相对更灵活一点。有这两种,基本上页面的数据就可以抓取的差不多了

但是有些网站的为了防止爬虫。做了一些JavaScript脚本代码。就是说,你加载页面时,获取不到页面的html。只有在触发脚本代码事件。才会渲染出真正的html

比如:页面的上一页下一页的操作。如果获取不到下一页的html就没办法抓取这个网站的全部页面。这个时候就需要今天的重头戏了python selenium

2  python selenium

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器

#1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口

browser =webdriver.Chrome()

browser.get(www.baidu.com')

在创建浏览器对象时,需要安装浏览器驱动(版本必须和浏览器对应),webdriver.Chrome(path)是有一个参数的,参数就是浏览器驱动路径。(如果把驱动路径放入打path变量中,就可以不写参数了)

元素定位

find_element_by_id() # 通过元素ID定位

find_element_by_name() # 通过元素Name定位

find_element_by_class_name() # 通过类名定位

find_element_by_tag_name() # 通过元素TagName定位

find_element_by_link_text() # 通过文本内容定位

find_element_by_partial_link_text()

find_element_by_xpath() # 通过Xpath语法定位

find_element_by_css_selector() # 通过选择器定位

这些都是获取一个element的,如果想获取多个,加s(eg:find_elements_by_name())

一般用的多的就是find_elements_by_xpath()这个了。

element_all = browser.find_elements_by_xpath('//div//a[contains(@href, "www.baidu.com")]')

这个是获取div下的a标签的href属性中包括www.baidu.com的全部WebElement,会得到一个WebElement的列表

通过遍历WebElement的列表可以获取符合条件的WebElement,然后通过WebElement的方法,就能获取想要的字段的属性了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值