1. selenium基础

selenium部分可以去看我写的selenium基础部分,由于链接太多了这里就不发出来了。

代理ip:

有时候频繁爬取一些网页。服务器发现你是爬虫后会封掉你的ip地址。这时候我们可以更改代理ip。更改代理ip不同的浏览器有不同的实现方式。这里使用我最常用的Chrome浏览器为例。

 
  1. from selenium import webdriver
  2. chromeOptions = webdriver.ChromeOptions()
  3.  
  4. # 设置代理
  5. chromeOptions.add_argument("--proxy-server=http://202.20.16.82:10152")
  6. # 一定要注意,=两边不能有空格,不能是这样--proxy-server = http://202.20.16.82:10152
  7. driver = webdriver.Chrome(chrome_options = chromeOptions)
  8.  
  9. # 查看本机ip,查看代理是否起作用
  10. driver.get("http://httpbin.org/ip")
  11. print(driver.page_source)
  12.  
  13. # 退出,清除浏览器缓存
  14. driver.quit()

注意事项: 

第一,选择稳定的固定的代理IP。不要选择动态代理IP。我们常用的爬虫IP代理通常都是具有高度保密性质的高匿名动态IP,是通过拨号动态产生的,时效性非常的短,一般都是在3分钟左右。

第二,选择速度较快的代理IP。因为selenium爬虫采用的是浏览器渲染技术,这种浏览器渲染技术速度就本身就很慢。如果选择的代理IP速度较慢,爬取的时间就会进一步增加。

第三,要有足够大的电脑内存。因为chrome占内存较大,在并发度很高的情况下,容易造成浏览器崩溃,也就是程序崩溃。

第四,在程序结束时,调用driver.quit( )清除浏览器缓存。

2. selenium爬虫实例

选案例真的给我整吐了,开始想弄最常用的淘宝,结果一点搜索就要登录,然后就是天猫,点击下一页就需要登录,搞得我就爬了第一页。最后还是京东好,什么都可以。

2.1 初步分析

像京东、淘宝、天猫这些网站都是动态加载,刚打开只会加载几十条数据,当滑动条到达一定位置的时候,才会继续加载。这时候我们可以通过selenium模拟浏览器下拉网页的过程,获取网站全部商品的信息。

 
  1. browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")

selenium爬虫

 

selenium爬虫

2.2 模拟翻页

在前面,我们如果要爬取查询的每一页的内容,我们只能分析url,找规律,才能跳转到下一页,并获取数据。

现在我们就可以使用xpath定位+selenium点击,来模拟浏览器的翻页行为了。

下拉网页至底部可以发现有一个下一页的按钮,我们只需获取并点击该元素即可实现翻页。

 
  1. browser.find_element_by_xpath('//a[@class="pn-next" and @onclick]').click()

selenium爬虫

 

2.3 获取数据 

接下来,我们需要解析每一个网页来获取我们需要的数据,具体包括(可以使用selenium选择元素):

商品 ID:browser.find_elements_by_xpath('//li[@data-sku]'),用于构造链接地址

商品价格:browser.find_elements_by_xpath('//div[@class="gl-i-wrap"]/div[2]/strong/i')

商品名称:browser.find_elements_by_xpath('//div[@class="gl-i-wrap"]/div[3]/a/em')

评论人数:browser.find_elements_by_xpath('//div[@class="gl-i-wrap"]/div[4]/strong')

selenium爬虫

相关文章:

  • 2022-12-23
  • 2021-05-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-11
  • 2021-08-27
猜你喜欢
  • 2021-06-21
  • 2021-07-30
  • 2021-08-22
  • 2021-05-31
  • 2021-11-28
  • 2022-02-20
  • 2021-11-10
相关资源
相似解决方案