Python crawler
1:import win32com.client
win32com.client 一个封装为.py的VBA,模拟用户对excel读和写操作,为python调用windows底层组建对word,excel,ppt等进行操作。
只能在windows下使用,并且要安装 office或者WPS. 2: from selenium import webdriver
selenium:英[səˈliːniəm,硒,是一个基于浏览器的自动化测试工具
zhangsan = webdriver.Chrome()#打开浏览器
zhangsan.get("https://www.taobao.com")#打开网站 3:WebDriver元素定位方式: id,name,link_text 等。
zhangsan.find_element_by_link_text("亲,请登录").click()
4:
Scrapy是一个适用爬取网站数据、提取结构性数据的应用程序框架,它可以应用在广泛领域,有成熟高效的scrapy-redis分布式策略。
爬虫分类:通用爬虫 和 聚焦爬虫——就是爬虫程序员所进行的工作,就是根客户的需求,爬取指定网站的特定内容。
2. python基础知识
urllib.request
urllib.parse
正则表达式等等基础知识。
4. 抓包工具
chrome浏览器的开发者模式,在这里可以检查网页的各种元素。
fiddler:原本是为测试来测试网站的,后来成了爬虫工程师最喜爱的工具。这是一款开源软件,可以直接去官网下载安装https://www.telerik.com/downl...
postman:可以根据请求头信息生成简单的网页爬取代码,界面相对于fiddler也要美观
motimproxy
简单的爬虫实例:一行代码爬取百度首页,如同在浏览器输入网址一样
import urllib.request
urllib.request.urlretrieve('http://www.baidu.com/', 'baidu.html')
www.bilibili.com/video/BV1cd4y1y7d7/?p=4&spm_id_from=pageDriver&vd_source=bbd2966da727b3376515872084138922 5:获取content, 根据 当前的 url 的 response为准,如果 拿不到数据,就需要去其他 URL。
当前 url 的 elements 和 url 的 response 不一样。
页面上的数据在哪儿? 当前 URL的response, 其他url的 response , js生成。 6:url的形式
形式 scheme://host[:port#]/path/…./[?query-string][#anchor]
scheme:协议(例如:http,https,ftp)
host:服务器的IP地址或域名
port:服务器的端口(如果是走协议默认端口,80or443)
path:访问资源的路径
query-string:参数,发送给http服务器的数据
anchor:锚(跳转到网页的指定锚点位置)主播
http://localhost:4000/file/part01/1.2.html http://item.id.com/11936238.html#product-detail
7: 种子URL, 网页源码,div标签,数据预处理,数据清洗; 分词语,索引, 引用次数,点击;pagerank算法
以图搜图,听歌识曲,以及 随着网络速率提升,可以根据视频搜索;
/robots.txt 协议,网站告诉 user agent(身份,谁) 可以搜索哪些内容; 8:
### 页面上的数据在哪里
一 当前url地址对应的响应中
一 其他的url地址对应的响应中:比如ajax请求中
一 js生成的:部分数据在响应中,全部通过js生成
### requests中解决编解码的方法
一 response.content.decode()
一 response.content.decode("gbk")
一 response.text 9:作:实现任意贴吧的爬虫,保存网页到本地,流程:
列表
遍历
保存
import requests
class TiebaSpider:
def __init__(self,tieba_name):
self.tieba_name = tieba_name # 下一行+tieba_name+,2个+?
self.url_temp="https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"
self.headers={"User-Agent":"Mozilla/5.0(Macintosh; Intel Mac OS X 10_13_2)ApplewebKit/53"}
def get_url_list(self):#1.构造url列表
url_list = []
for i in range(1000):
url_list.append(self.url_temp.format(i*50)) return url_list
def parse_url(self,url):#发送请求,获取响应
print(url)
response=requests.get(url,headers=self.headers)
return response.content.decode()
def save_html(self,html_str,page_num):#保存html字符串
file path="1-第0页.html".format(self.tieba name,page num)
with open(file path."w".encoding:"utf-8") as f: #"李毅-第4页.html"
f.write(html_str)
def run(self):#实现主要逻辑
#1.构造url列表
url_list= self.get_url_list()#2.遍历,发送请求,获取响应 for url in url list:
html_str=self.parse_url(url)#3.保存
page_num =url_list.index(url)+1 #页码数 self.save_html(html_str,page_num)
if __name__ == '__main__':
tieba_spider = TiebaSpider("李毅")
tieba_spider.run()
10:
from selenium import webdriver
import win32com.client
msword = Dispatch('Word.Application')# 用Dispatch()的方式將會啟動MS Word。 11:是否知道 服务器地址
正向代理: Chrome等——>VPN代理 ——> 我们知道:google服务器
反向代理: Chrome等——>nginx ——> 不知道:服务器
proxies, 高匿代理,哪些支持:https, post ,小于3S的延时,筛选 使用次数少的10个(服务器识别 非同一个人发出的爬虫),检查IP可用性:在线代理IP质量检测网络,F12
页:
[1]