汉口企业制作网站的,网站开发合同范本下载,怎么修改wordpress侧边栏信息,长春网站建设那家好什么是爬虫
爬虫就是程序#xff0c;一个能获取互联网上的资源(文字、图片、音视频)数据的程序。 不用爬⾍#xff0c; 打开浏览器#xff0c; 输⼊百度的⽹址#xff0c;就能在浏览器上看到百度的内容了。那换成爬⾍呢#xff1f; 道理是⼀样的。只不过#xff0c;是⽤…什么是爬虫
爬虫就是程序一个能获取互联网上的资源(文字、图片、音视频)数据的程序。 不用爬⾍ 打开浏览器 输⼊百度的⽹址就能在浏览器上看到百度的内容了。那换成爬⾍呢 道理是⼀样的。只不过是⽤代码来模拟⼀个浏览器 然后同样的输⼊百度的⽹址。那么程序也能拿到百度的内容
爬虫合法吗
爬虫在法律上暂时是不被禁止的。但服务器上的数据有产权归属如果网络爬虫获取数据后牟利将带来法律风险。小规模数据量小频率不高, 不窃取用户隐私的爬取是可以的合法的
反爬与反反爬
反爬机制网站可以通过制定相应的策略或者技术手段防止爬虫程序进行网站数据的爬取 反反爬策略爬虫程序可以通过制定相关的策略或者技术手段破解网站中具备的反爬机制从而可以获取网站中相关的数据。 robots.txt协议君子协议。规定了网站中哪些数据可以被爬虫爬取哪些数据不可以被爬取
requests请求库
安装
pip install requests请求百度首页源代码
import requests# 这样运行的话就把百度首页的html提取出来了
url https://www.baidu.com/
response requests.get(url)
response.encoding utf-8
print(response.text)XPath解析库
⼤多数情况下 我们并不需要整个⽹⻚的内容 只是需要那么⼀⼩部分。所以我们要做数据解析和提取。常见的有xpath解析、BeautifulSoup解析、正则表达式re解析XPath是⼀⻔在 XML ⽂档中查找信息的语⾔ XPath可⽤来在 XML⽂档中对元素和属性进⾏遍历⽽我们熟知的HTML恰巧属于XML的⼀个⼦集所以完全可以⽤xpath去查找html中的内容在python中想要使⽤xpath需要安装lxml模块pip install lxml基础用法①将要解析的html内容构造出etree对象②使⽤etree对象的xpath()⽅法配合xpath表达式来完成对数据的提取
html
!DOCTYPE html
htmlheadmeta charsetUTF-8 /titleTitle/title/headbodyullia hrefhttp://www.baidu.com百度/a/lilia hrefhttp://www.google.com⾕歌/a/lilia hrefhttp://www.sogou.com搜狗/a/li/ulollia hreffeiji⻜机/a/lilia hrefdapao⼤炮/a/lilia hrefhuoche⽕⻋/a/li/oldiv李嘉诚/divdiv胡辣汤/div/body
/htmlfrom lxml import etreetree etree.XML(html)
result tree.xpath(/html/body/ul/li/a/href)
print(result)result tree.xpath(/html/body/ul/li)
for li in result:print(li.xpath(./a/href))result tree.xpath(/html/body/ol/li/a/href)
print(result)BeautifulSoup解析库
安装库pip intall bs4
html langen
headmeta charsetUTF-8 /title测试bs4/title
/head
bodydivp百里守约/p/divdiv classsongp李清照/pp王安石/pp苏轼/pp柳宗元/pa hrefhttp://www.song.com/ title赵匡胤 target_selfspanthis is span/span宋朝是最强大的王朝不是军队的强大而是经济很强大国民都很有钱/aa href classdu总为浮云能蔽日,长安不见使人愁/aimg srchttp://www.baidu.com/meinv.jpg alt //divdiv classtangullia href百度一下你就知道 titleqing清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村/a/lilia href网易 titleqin秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山/a/lilia href126网易免费邮--你的专业电子邮 altqi岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君/a/lilia hrefhome.sina.com classdu杜甫/a/lilia hrefAwesome Coming Soon Widget Responsive Widget classdu杜牧/a/lilib杜小月/b/lilii度蜜月/i/lilia hrefhttp://www.haha.com idfeng凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘/a/li/ul/div
/body
/htmlfrom bs4 import BeautifulSoup#本地的html
fp open(rtest.html,r,encodingutf-8)
soup BeautifulSoup(fp,lxml)
print(soup) #返回这个网页的源代码
print(soup.a) #返回第一个a标签的内容
print(soup.div) #返回第一个div 的内容
print(soup.find(div)) #返回第一个div 的内容
print(soup.find(div,class_song)) #返回class song 的div的内容
print(soup.find_all(a)) #返回所有a标签的内容
print(soup.find(div,class_song).a.get(href))# 返回http://www.song.com/
print(soup.find(div,class_song).img.get(src))#返回http://www.baidu.com/meinv.jpg
print(soup.find(div,class_song).a.text) # 返回文本
print(soup.select(.tang)) 返回class tang 的div的内容
print(soup.select(.tang ul li a)[0].text) # 返回tang下的第一个标签的内容
print(soup.select(.tang ul li a)[0][href]) # 返回tang下的第一个标签的链接正则表达式
正则表达式是用来简洁表达一组字符串的表达式
import re
# 将正则表达式编译成为⼀个正则表达式对象, 规则要匹配的是3个数字
obj re.compile(r\d{3})
# 正则表达式对象调⽤search, 参数为待匹配的字符串
ret obj.search(abc123eeee)
print(ret.group()) # 结果: 123元字符具有固定含义的特殊符号 常⽤元字符 . 匹配除换⾏符以外的任意字符 \w 匹配字⺟或数字或下划线 \s 匹配任意的空⽩符 \d 匹配数字 \n 匹配⼀个换⾏符 \t 匹配⼀个制表符 ^ 匹配字符串的开始 $ 匹配字符串的结尾 \W 匹配⾮字⺟或数字或下划线 \D 匹配⾮数字 \S 匹配⾮空⽩符 a|b 匹配字符a或字符b () 匹配括号内的表达式也表示⼀个组 […] 匹配字符组中的字符 [^…] 匹配除了字符组中字符的所有字符 量词: 控制前⾯的元字符出现的次数 *重复零次或更多次 重复⼀次或更多次 ? 重复零次或⼀次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 贪婪匹配和惰性匹配
str: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏啊
reg: 玩⼉.*?游戏
此时匹配的是: 玩⼉吃鸡游戏
reg: 玩⼉.*游戏
此时匹配的是: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏str: div胡辣汤/div
reg: .*
结果: div胡辣汤/divstr: div胡辣汤/div
reg: .*?
结果:
div
/divstr: div胡辣汤/divspan饭团/span
reg: div.*?/div
结果:
div胡辣汤/div案例练习用正则表达式提取豆瓣电影top250的数据并保存
# 拿到页面源代码. requests
# 通过re来提取想要的有效信息 re
import requests
import re
import csvurl https://movie.douban.com/top250
headers {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36
}
resp requests.get(url, headersheaders)
page_content resp.text# 解析数据
obj re.compile(rli.*?div classitem.*?span classtitle(?Pname.*?)r/span.*?p class.*?br(?Pyear.*?)nbsp.*?span rclassrating_num propertyv:average(?Pscore.*?)/span.*?rspan(?Pnum.*?)人评价/span, re.S)
# 开始匹配
result obj.finditer(page_content)
f open(data.csv, modew)
csvwriter csv.writer(f)
for it in result:print(it.group(name))print(it.group(score))print(it.group(num))print(it.group(year).strip())dic it.groupdict()dic[year] dic[year].strip()csvwriter.writerow(dic.values())f.close()
print(over!)cookies处理需要登陆的网站
headers为HTTP协议中的请求头。⼀般存放⼀些和请求内容⽆关的数据。有时也会存放⼀些安全验证信息比如常⻅的User-Agentcookies等。通过requests发送的请求, 我们可以把请求头信息放在headers中。也可以单独进⾏存放, 最终由requests⾃动帮我们拼接成完整的http请求头
selenium
Selenium是一个Web的自动化测试工具最初是为网站自动化测试而开发的Selenium 可以直接调用浏览器它支持所有主流的浏览器包括PhantomJS这些无界面的浏览器可以接收指令让浏览器自动加载页面获取需要的数据甚至页面截屏等
在下载好chromedriver以及安装好selenium模块后可以执行下列代码并观察运行的过程
from selenium import webdriver
# 如果driver没有添加到了环境变量则需要将driver的绝对路径赋值给executable_path参数
# driver webdriver.Chrome(executable_pathdriver的绝对路径)# 如果driver添加了环境变量则不需要设置executable_path
driver webdriver.Chrome()
# 向一个url发起请求
driver.get(https://www.baidu.com/)
# 把网页保存为图片
driver.save_screenshot(baidu.png)
# 打印页面的标题
print(driver.title)
# 在百度搜索框中搜索python
driver.find_element_by_id(kw).send_keys(python)
# 点击百度搜索
driver.find_element_by_id(su).click()
# 退出模拟浏览器
driver.quit()selenium工作原理利用浏览器原生的API封装成一套更加面向对象的Selenium WebDriver API直接操作浏览器页面里的元素甚至操作浏览器本身(截屏窗口大小启动关闭安装插件配置证书之类的)在selenium中可以通过多种方式来定位标签返回标签元素对象
find_element_by_id (返回一个元素)
find_element(s)_by_class_name (根据类名获取元素列表)
find_element(s)_by_name (根据标签的name属性值返回包含标签对象元素的列表)
find_element(s)_by_xpath (返回一个包含元素的列表)
find_element(s)_by_link_text (根据连接文本获取元素列表)
find_element(s)_by_partial_link_text (根据链接包含的文本获取元素列表)
find_element(s)_by_tag_name (根据标签名获取元素列表)
find_element(s)_by_css_selector (根据css选择器来获取元素列表)selenium获取cookiedriver.get_cookies()返回列表其中包含的是完整的cookie信息不光有name、value还有domain等cookie其他维度的信息。所以如果想要把获取的cookie信息和requests模块配合使用的话需要转换为name、value作为键值对的cookie字典
# 获取当前标签页的全部cookie信息
print(driver.get_cookies())
# 把cookie转化为字典
cookies_dict {cookie[‘name’]: cookie[‘value’] for cookie in driver.get_cookies()}selenium控制浏览器执行js代码
import time
from selenium import webdriverdriver webdriver.Chrome()
driver.get(http://www.itcast.cn/)
time.sleep(1)js window.scrollTo(0,document.body.scrollHeight) # js语句
driver.execute_script(js) # 执行js的方法 跳转到最底部time.sleep(5)
driver.quit()scrapy框架
Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架 scrapy的架构如下图图中中文是为了方便理解后加上去的。图中绿色线条的表示数据的传递。注意图中中间件的位置决定了其作用。注意其中引擎的位置所有的模块之前相互独立只和引擎进行交互 爬虫中起始的url构造成request对象–爬虫中间件–引擎–调度器调度器把request–引擎–下载中间件—下载器下载器发送请求获取response响应----下载中间件----引擎—爬虫中间件—爬虫爬虫提取url地址组装成request对象----爬虫中间件—引擎—调度器重复步骤2爬虫提取数据—引擎—管道处理和保存数据
scrapy的三个内置对象
request请求对象由url method post_data headers等构成response响应对象由url body status headers等构成item数据对象本质是个字典
scrapy中每个模块的具体作用 文章转载自: http://www.morning.nzcys.cn.gov.cn.nzcys.cn http://www.morning.qflwp.cn.gov.cn.qflwp.cn http://www.morning.ypzsk.cn.gov.cn.ypzsk.cn http://www.morning.rqqlp.cn.gov.cn.rqqlp.cn http://www.morning.bcngs.cn.gov.cn.bcngs.cn http://www.morning.rkzk.cn.gov.cn.rkzk.cn http://www.morning.ebpz.cn.gov.cn.ebpz.cn http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn http://www.morning.lhrcr.cn.gov.cn.lhrcr.cn http://www.morning.qbwbs.cn.gov.cn.qbwbs.cn http://www.morning.qxljc.cn.gov.cn.qxljc.cn http://www.morning.zxhpx.cn.gov.cn.zxhpx.cn http://www.morning.ndltr.cn.gov.cn.ndltr.cn http://www.morning.nwjd.cn.gov.cn.nwjd.cn http://www.morning.rhpgk.cn.gov.cn.rhpgk.cn http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn http://www.morning.ryztl.cn.gov.cn.ryztl.cn http://www.morning.njftk.cn.gov.cn.njftk.cn http://www.morning.cbynh.cn.gov.cn.cbynh.cn http://www.morning.wcjgg.cn.gov.cn.wcjgg.cn http://www.morning.cwwts.cn.gov.cn.cwwts.cn http://www.morning.sjwzz.cn.gov.cn.sjwzz.cn http://www.morning.rnygs.cn.gov.cn.rnygs.cn http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn http://www.morning.hzryl.cn.gov.cn.hzryl.cn http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn http://www.morning.krbjb.cn.gov.cn.krbjb.cn http://www.morning.zqsnj.cn.gov.cn.zqsnj.cn http://www.morning.cklgf.cn.gov.cn.cklgf.cn http://www.morning.dzyxr.cn.gov.cn.dzyxr.cn http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn http://www.morning.flxgx.cn.gov.cn.flxgx.cn http://www.morning.hghhy.cn.gov.cn.hghhy.cn http://www.morning.lskyz.cn.gov.cn.lskyz.cn http://www.morning.ssrjt.cn.gov.cn.ssrjt.cn http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn http://www.morning.mkfhx.cn.gov.cn.mkfhx.cn http://www.morning.fbccx.cn.gov.cn.fbccx.cn http://www.morning.yesidu.com.gov.cn.yesidu.com http://www.morning.nkkr.cn.gov.cn.nkkr.cn http://www.morning.tllws.cn.gov.cn.tllws.cn http://www.morning.psxfg.cn.gov.cn.psxfg.cn http://www.morning.rjtmg.cn.gov.cn.rjtmg.cn http://www.morning.jkpnm.cn.gov.cn.jkpnm.cn http://www.morning.tjndb.cn.gov.cn.tjndb.cn http://www.morning.dwyyf.cn.gov.cn.dwyyf.cn http://www.morning.yxdrf.cn.gov.cn.yxdrf.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.rykx.cn.gov.cn.rykx.cn http://www.morning.ryrgx.cn.gov.cn.ryrgx.cn http://www.morning.hncrc.cn.gov.cn.hncrc.cn http://www.morning.rlrxh.cn.gov.cn.rlrxh.cn http://www.morning.mtymb.cn.gov.cn.mtymb.cn http://www.morning.llqch.cn.gov.cn.llqch.cn http://www.morning.cnkrd.cn.gov.cn.cnkrd.cn http://www.morning.lkgqb.cn.gov.cn.lkgqb.cn http://www.morning.crsqs.cn.gov.cn.crsqs.cn http://www.morning.qprtm.cn.gov.cn.qprtm.cn http://www.morning.rshkh.cn.gov.cn.rshkh.cn http://www.morning.kgltb.cn.gov.cn.kgltb.cn http://www.morning.mqwdh.cn.gov.cn.mqwdh.cn http://www.morning.wcgcm.cn.gov.cn.wcgcm.cn http://www.morning.jcypk.cn.gov.cn.jcypk.cn http://www.morning.hnrpk.cn.gov.cn.hnrpk.cn http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn http://www.morning.prhfc.cn.gov.cn.prhfc.cn http://www.morning.lhsdf.cn.gov.cn.lhsdf.cn http://www.morning.kqzrt.cn.gov.cn.kqzrt.cn http://www.morning.mhcys.cn.gov.cn.mhcys.cn http://www.morning.kxwsn.cn.gov.cn.kxwsn.cn http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn http://www.morning.zlkps.cn.gov.cn.zlkps.cn http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn http://www.morning.bhrkx.cn.gov.cn.bhrkx.cn http://www.morning.clgbb.cn.gov.cn.clgbb.cn http://www.morning.c7623.cn.gov.cn.c7623.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn http://www.morning.rzysq.cn.gov.cn.rzysq.cn http://www.morning.gsksm.cn.gov.cn.gsksm.cn