古诗文爬取案例
古诗文爬取需求:爬取中国古诗文网古诗包括题目 作者 朝代 正文
创建项目
1234打开Terminalcd 文件夹scrapy startproject gswscrapy genspider gs gushiwen.org
创建爬虫
设置爬虫name
设置allow_domain
设置start_urls
设置settings文件包括LOG pipeline 头部信息及items
123456789DEFAULT_REQUEST_HEADERS = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36', 'Accept-Language': 'en',}LOG_LEVEL = 'WARNING'ITEM_PIPELINES = { ...
scrapy案例
scrapy案例需求 爬取页面工作及工作职责1https://careers.tencent.com/search.html
scrapy爬取文件流程
创建项目
创建爬虫
设置爬虫name
设置allow_domain
设置start_urls
设置log
实现数据提取方法
pipeline保存数据
通过数据接口获取页面信息 得到以下的结果
1234567第一页https://careers.tencent.com/tencentcareer/api/post/Query? timestamp=1605963271594&countryId=&cityId=&bgIds=&productId=&categoryId=&parentC ategoryId=&attrId=&keyword=&pageIndex=1& ...
scrapy框架
scrapyscrapy工作流程
首先Spider(爬虫)将需要发送请求的url经过ScrapyEngine(引擎)交给调度器(Scheduler)
Scheduler(调度器) 排序 入列处理后,在经过ScrapyEngine(引擎)到DownloaderMiddlewares(下载中间件)(user-agent cookie proxy)交给downloader
Downlaoser向互联网发起请求,并接收响应(response).将响应在经过在经过ScrapyEngine(引擎)给了SpiderMiddlewares(爬虫中间件)交给Spiders
Spiders处理response,提取数据并将数据经过ScrapyEngine交给itemPipeline(管道)保存数据
scrapy入门
pycharm Terminal控制面板
进入文件夹 cd xxx
scrapy startproject xx(scrapy项目)
cd xx
scrapy genspider xxxx(项目名称) douban.com
在settings中打开pipeline
123ITEM ...
多线程
多线程多线程创建
通过函数 使用threading模块中Thread类中target参数,需要制定接受一个函数对象,函数就是执行子线程的逻辑
通过类 自定义类继承threading.Thread类 并覆盖run()方法中来实现线程的逻辑 通过面向对象的编程方式,如果你的子线程比较多 比较方便管理代码
1234567891011121314151617181920212223242526import timeimport threadingdef singe(): for i in range(3): print('正在唱歌....') time.sleep(1)def dance(): for i in range(3): print('正在跳舞....') time.sleep(1)if __name__ == '__main__': t1 = threading.Thread(target=singe) t2 = threading.Thre ...
12306模拟买票
需求:用12306进行买票第一步 登陆
浏览器闪退如何解决
显示等待页面跳转及页面加载
第二步 车次及余票查询
由个人详情页面跳转车次界面
先要获取所有的站点以及对应的编号–>把数数据存到字典当中 key name value code
输入出发地 输入目的地 输入出发日期
1 定位input标签
2 获取编号
3 driver.excute_script()方法来设置隐藏标签 code设置到value里面
4 定位查询按钮 点击查询 出现车次列表
第三步 解析车次列表
显式等待车次列表
车次列表分析 tbody标签下面的 tr标签 过滤没有车次信息的tr标签 xpath (not )
替换 拼接的方式把车次信息的数据放到了一个列表里面
init方法里面初始化了一个用户的车次 先获得了这个车次 做了一个判断 判断这个数据在我们初始
化信息里面
然后进行 我们想要买的车次的数据解析
第四步 确认乘客信息
显式等待乘客信息页面
显示等待是否乘客标签加载出来了
init 方法里面 初始化了乘客信息 [ xxx ,xxx]
确定席位 select标签 Sele ...
豆瓣登陆
练习登陆豆瓣12345678910111213from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get('https://www.douban.com/')#切换iframedriver.switch_to.frame(driver.find_element_by_xpath('//div[@class="login"]/iframe'))time.sleep(3)driver.find_element_by_xpath('//li[@class="account-tab-account"]').click() #需要查看是否被iframe包裹 如需要 则进行切换driver.find_element_by_id('username').send_keys('sansan') #输入账号driver.find_elemen ...
selenium
seleniumajax基本介绍
JS
是网络上最常⽤的脚本语⾔,它可以收集⽤户的跟踪数据,不需要重载页面直接提交表单,在⻚⾯嵌⼊多媒体⽂件,甚⾄运⾏网页
JQuery
jQuery是⼀个快速、简介的JavaScript框架,封装了JavaScript常⽤的功能代码
ajax
ajax可以使⽤⽹⻚实现异步更新,可以在不重新加载整个网页的情况下,对网页的某部分进⾏更新
获取ajax数据方式
直接分析ajax调⽤的接⼝。然后通过代码请求这个接口。
优点:直接可以请求到数据。 不需要做⼀些解析工作。代码量少,性能⾼
缺点:分析接⼝⽐较复杂,特别是⼀些通过js混淆的 接口,要有⼀定的js功底。容易被发现是爬⾍。
使⽤Selenium+chromedriver模拟浏览器⾏为获取数据
优点:直接模拟浏览器的行为。浏览器能请求到的,使⽤selenium也能请求到。爬⾍更稳定。
缺点:代码量多,性能低
Selenium与Chromedriver基本介绍
selenium是⼀个web的⾃动化测试⼯具,最初是为网站⾃动化测试⽽开发的,selenium可以直接运⾏在浏览器上, ...
爬取天气练习
需求:爬取全国的城市以及对应的温度(省会 直辖市) 保存到csv当中12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970import requestsfrom bs4 import BeautifulSoupimport csvtitles = ('city','temp')# 定义一个函数来解析网页def pares_page(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36' } response = r ...
csv1操作
csv操作csv简介
CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分 隔符可以不是逗号),是⼀种常⽤的⽂本格式,⽤以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的⽂件。python⾃带了csv模块,专⻔⽤于处理csv⽂件的读取
csv使用
写入文件
通过创建writer对象,主要用到2个方法,一个是writerow 写入一行 另一个是writerows写入多行
DictWriter可以使用字典的方式把字典写入进去
1234567891011121314151617181920import csv#首先定义表头titles = ('name','age')persons = [('张三',20),('李四',25)]#第一种写入方式with open('person.csv','w',encoding='utf-8') as f: writer = csv. ...
bs4
bs4基本概念Beautiful Soup 是⼀个可以从HTML或XML⽂件中提取数据的⽹⻚信息提取库
快速开始bs4对象种类1234tag : 标签NavigableString : 可导航的字符串BeautifulSoup : bs对象 父类为TagComment : 注释
获取bs4对象并规范化打印123456789101112131415161718from bs4 import BeautifulSouphtml_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little ...