0、换行问题 存储的时候显示的 是有效的 也就是写成HTML文档时在编辑器里打开是一行 在读取过来单独使用的时候换行符生效 浏览器里打开HTML就会分行 1、图片 爬取网站图片http://sc.chinaz.com/tupian/xingganmeinvtupian_3.html 懒加载:用到的时候再加载 实现方式:通过页面JS 懒加载特征: <img src2 = "图片路径"> <img _src = "图片路径"> <img data_src = "图片路径"> image_list = tree.xpath('//div[@id="container"]/div/div/a/img/@src2') src2 2、jsonpath模块 用来解析josn数据使用的 python处理josn格式用到的函数 import json json.dumps() :将字典或者列表转化为json格式的字符串 json.loads() :将json格式的字符串转化为python对象 记忆方法:前两个有s,是字符串和两个格式之间的转化 json.dump() :将字典或者列表转化为json格式的字符串并且写入到文件中 json.load() :从文件中读取json格式字符串,转化为python对象 记忆方法:后两个不带s,属于写入文件和从文件中读取 前端处理: 将json格式的字符串转化为js对象 JSON.parse('json格式字符串') eval('('+json格式字符串 +')') xpath和jsonpath的对比: / $ 根元素 . @ 当前元素 / . 子元素 // .. 任意位置查找 * * 通配符 [] ?() 过滤 索引1 索引0 3、selenium和PhantomJS selenium:是一个python的第三方库,对外的接口可以操作你的浏览器,然后让浏览器完成自动化的操作 使用selenium: 1、安装 pip install selenium 2、操作浏览器 需要有该浏览器驱动 比如谷歌:chromedriver.exe #当前设置的驱动路径 详细介绍见selenium自动化操作.py path =r'E:py爬虫day5geckodriver.exe' browser = webdriver.Firefox(executable_path=path) 生成一个浏览器对象 url = "" browser.get(url) 打开网页 各种操作页面元素的函数: find_element_by_id 根据id节点查找 find_elements_by_name 根据name查找 find_elements_by_xpath 根据xpath查找 find_elements_by_tag_name 根据标签名查找 find_elements_by_class_name 根据class名字查找 find_elements_by_css_selector 根据选择器查找 find_elements_by_link_text 根据连接内容查找 getsend_keysclick PhantomJS 是一款浏览器,是无界面浏览器 selenium+PhantomJS 就是爬虫的终极解决方案 下拉滚动条到底部 豆瓣电影下拉 #获取网页的代码,保存到文件中 html = browser.page_source 1、前面的登录过程:直接抓包找到post地址,发送过去即刻登陆成功 2、现在的登陆过程:直接抓包post不行,因为表单中有一些数据需要从网页中获取到, 比如这里的formhash令牌。呢么现在的登录需要先发送get请求到登录页面,然后通过xpath、bs 、获取需要的表单令牌,然后在发送post请求,开始登录