爬虫-下

补充知识

根据看别人打代码,使用的模块,封装的方法。

 PyExecJS、python Click(定制命令)、gunicorn(是一个wsgi协议的web服务器)结合Flask后端部署。

手机爬虫

抓包工具:

前提条件:

1).电脑需要安装Fiddler
2).测试手机需要支持Wifi
3).测试手机与电脑需要同一网络
4).所测APP需支持代理 

 app加固、Android安卓动态调试 概念

fiddler手机抓包原理

  在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应。Fiddler 是以代理web 服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。网络请求走fiddler,fiddler从中拦截数据,由于fiddler充当中间人的角色,所以可以解密https。因此,它比一般的firebug或者是chrome自带的抓包工具要好用的多。不仅如此,它还可以支持请求重放等一些高级功能。它还可以支持对手机应用进行http抓包的。本文就是手机抓包。

selenium的使用

选择器基本用法

# 1、find_element_by_id   根据id找
# 2、find_element_by_link_text     根据链接名字找到控件(a标签的文字)
# 3、find_element_by_partial_link_text   根据链接名字找到控件(a标签的文字)模糊查询
# 4、find_element_by_tag_name       根据标签名
# 5、find_element_by_class_name     根据类名
# 6、find_element_by_name           根据属性名
# 7、find_element_by_css_selector   根据css选择器
# 8、find_element_by_xpath          根据xpath选择

代码实例:模拟自动化账号登录。

from selenium import webdriver

import time
bro=webdriver.Chrome()
bro.get("http://www.baidu.com")
bro.implicitly_wait(10)

dl_button=bro.find_element_by_link_text("登录")
dl_button.click()
user_login=bro.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn')
user_login.click()
time.sleep(1)
input_name=bro.find_element_by_name('userName')
input_name.send_keys("[email protected]")
input_password=bro.find_element_by_id("TANGRAM__PSP_10__password")
input_password.send_keys("xxxxxx")
submit_button=bro.find_element_by_id('TANGRAM__PSP_10__submit')
time.sleep(1)
submit_button.click()

time.sleep(100)

print(bro.get_cookies())
bro.close()

获取cookies的结果

显示等待和隐示等待


#隐式等待:在查找所有元素时,如果尚未被加载,则等10秒
# browser.implicitly_wait(10)   表示等待所有,

#显式等待:显式地等待某个元素被加载
# wait=WebDriverWait(browser,10)
# wait.until(EC.presence_of_element_located((By.ID,'content_left')))

爬取京东商品信息

打开京东页面搜索游戏本电脑分析:

 打开分析:

  利用选择器,逐一往下查询。

 代码实例:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys #键盘按键操作
import time
bro=webdriver.Chrome()
bro.get("https://www.jd.com")
bro.implicitly_wait(10)

def get_goods(bro):
    print("--------------------------") 分页
    goods_li = bro.find_elements_by_class_name('gl-item')
    for good in goods_li:
        img_url = good.find_element_by_css_selector('.p-img a img').get_attribute('src')
        if not img_url:
            img_url = 'https:' + good.find_element_by_css_selector('.p-img a img').get_attribute('data-lazy-img')
        url = good.find_element_by_css_selector('.p-img a').get_attribute('href')
        price = good.find_element_by_css_selector('.p-price i').text
        name = good.find_element_by_css_selector('.p-name em').text.replace('\n', '')
        commit = good.find_element_by_css_selector('.p-commit a').text
        print('''
        商品链接:%s
        商品图片:%s
        商品名字:%s
        商品价格:%s
        商品评论数:%s

        ''' % (url, img_url, name, price, commit))

    next_page = bro.find_element_by_partial_link_text("下一页")
    time.sleep(1)
    next_page.click()
    time.sleep(1)
    get_goods(bro)
input_search=bro.find_element_by_id('key')
input_search.send_keys("性感内衣")
input_search.send_keys(Keys.ENTER)

#进入了另一个页面
try:
    get_goods(bro)
except Exception as e:
    print("结束")
finally:
    bro.close()

XPath

  XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

因此,对 XPath 的理解是很多高级 XML 应用的基础。

选取节点

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

 

 

 

selenium拿到cookie;requests使用

验证码破解

如何破解知乎登录

requests-html介绍

破解知乎登录

 

xpaht选择

猜你喜欢

转载自www.cnblogs.com/Gaimo/p/11945835.html
今日推荐