![](https://img-blog.csdnimg.cn/20191122140441196.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
python爬虫
DeltaTime
奔跑的橙子
展开
-
爬虫过selenium检测
通过修改webdriver值过selenium验证from selenium import webdriverdriver = webdriver.Chrome()driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined })原创 2020-10-26 18:03:28 · 720 阅读 · 0 评论 -
易于布局使用的GUI库 PySimpleGUI
以下是 PySimpleGUI 库的示例程序,输入网址返回源码:import PySimpleGUI as sgimport requests# 获取响应def get_response(url): try: if url: response = requests.get(url=url, timeout=10) return response except Exception as e: print原创 2020-08-21 08:25:34 · 755 阅读 · 0 评论 -
二维列表转一维列表
# 使用 sum 函数arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]res = sum(arr, [])print(res)# 使用标准库 itertools chain 方法import itertoolsres = list(itertools.chain(*arr))print(res)原创 2020-08-19 10:27:54 · 943 阅读 · 0 评论 -
set对列表去重并保持元素原来的顺序
vals = [3, 4, 5, 3, 2, 1]res = list(set(vals)) # set() 对列表去重res.sort(key=vals.index) # 根据原始列表元素本来的位置对新列表排序print(res)原创 2020-08-18 17:23:01 · 782 阅读 · 0 评论 -
将网页保存到本地mhtml文件,包含样式与图片
from selenium import webdriverdriver = webdriver.Chrome()url = ‘https://www.baidu.com’driver.get(url)resp = driver.execute_cdp_cmd(‘Page.captureSnapshot’, {})with open(‘baiduhome.mhtml’, ‘w’, newline=’’) as fp:html = resp.get(‘data’)if html:print(h原创 2020-08-14 18:09:01 · 1997 阅读 · 0 评论 -
sqlalchemy 多表联查 获取其他表的字段值
使用sqlalchemy进行联合查询时,使用add_entity()方法将第二个表添加进来,查询的结果是一个由多个表的记录组成的元组列表。例如:将OrderDetail表和Goods表连接,计算OrderDetail表的payment字段的值,需要Goods表的price字段与OrderDetail表的quantity字段。这里payment是DECIMAL类型,quantity字段的值是整数,需要转换为Decimal类型再计算。lines = session.query(OrderDetail).j原创 2020-06-09 16:38:40 · 2773 阅读 · 2 评论 -
sqlalchemy操作数据库
from sqlalchemy import create_engine, Column, String, Integerfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmaker# 建表Base = declarative_base()class Nodes(Base): # 表名 __tablename__ = 'nodes' # 定原创 2020-05-25 14:45:23 · 203 阅读 · 0 评论 -
读取或导入父级目录下的包的模块
导入父级目录下的包目录结构如下:读取sea.py文件的内容import osroot_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))print(root_path)file_name = 'sea.py'file_path = f'{root_path}/Seaweedfs/{file_name}'with open(file_path, 'r') as fp:原创 2020-05-18 16:51:26 · 252 阅读 · 0 评论 -
获取网站的ssl证书信息
获取网站的ssl证书信息import sslimport socketimport pprinthostname = 'www.baidu.com'c = ssl.create_default_context()s = c.wrap_socket(socket.socket(), server_hostname=hostname)s.connect((hostname, 443))...原创 2020-04-05 17:17:04 · 979 阅读 · 1 评论 -
Python爬虫, 抓取百度图片
#!/usr/bin/env python # -*- coding: utf-8 -*-# @Time : 11/23/2019 4:06 PM# @Author : DeltaT# @File : 百度图片爬虫.py"""爬虫下载百度图片"""import reimport osimport urllibimport requestssearch_kw =...原创 2019-11-25 09:15:03 · 248 阅读 · 0 评论 -
爬虫遇到乱码怎么办? 解决乱码问题
情景在爬取非英文网站的页面时, 如果发现获取后的网页字符串无法正常显示, 出现乱码. 通常都是因为解码所使用的编码不是网页原来所使用的编码. 需要查询网页本身的编码.查询网页编码方法一:1. 打开浏览器开发者工具, 切换到console工具.2. 在控制台输入 document.chardet 即可显示出网页的编码格式.方法二:使用python获取网页编码格式.import r...原创 2019-11-23 14:03:17 · 1027 阅读 · 0 评论 -
金融界网站 股票数据爬虫案例
#!/usr/bin/env python # -*- coding: utf-8 -*-# @Time : 11/22/2019 4:05 PM# @Author : DeltaT# @File : 股票爬虫2.py"""该爬虫爬取了 金融界网站的股票数据.在不使用selenium的情况下, 解决网页异步加载数据的问题."""import requestsi...原创 2019-11-22 16:53:24 · 975 阅读 · 0 评论 -
问财网 股票信息爬虫案例
股票爬虫案例from selenium import webdriverfrom my_fake_useragent import UserAgentfrom lxml import etreeimport json"""序号,股票代码,股票简称,现价(元),涨跌幅(%)"""def selenium_test(): # 配置Chrome浏览器 chrome_...原创 2019-11-22 09:20:50 · 3401 阅读 · 0 评论 -
动态html,异步加载页面的处理
PhantomJSPhantomJS 是一个基于Webkit的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的 JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器要高效。如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理 JavaScrip、Cookie、headers,以及任何我们...原创 2019-06-23 10:18:28 · 2805 阅读 · 0 评论 -
middleware_demo
代理中间件import randomimport scrapy.conf import settingsclass ProxyMiddleware(object): def process_request(self, request, spider): proxy = random.choice(settings['PROXIES']) reques...原创 2019-06-23 10:18:54 · 182 阅读 · 0 评论 -
scrapy_redis
使用hashlib模块生成指纹import hashlibf = hashlib.sha1()text = 'http://www.baidu.com'f.update(text.encode()) # 需要将字符串进行编码f.hexdigest()# '633a42441e296c9004a78abe0b2ee3b37559d32f'继承 RedisSpider 类实现分布式...原创 2019-06-23 10:21:12 · 642 阅读 · 0 评论 -
发布工程
1. 备份python包进入当前项目目录:pip freeze > requirements.txt2. 还原python包pip install -r requirements.txt3. linux安装虚拟环境pip install virtualenv创建虚拟环境virtualenv py_venv进入虚拟环境cd py_venv/bin~/py_venv...原创 2019-06-23 10:21:41 · 213 阅读 · 0 评论 -
CSV EXCEL 文件操作
csv写入csv文件import csv# 元祖列表data = [ ('ken', '13', '01'), ('tom', '14', '02')]items = [ { 'name': 'bill', 'age': '14', 'id': '03' }, { 'name':...原创 2019-06-23 10:22:22 · 270 阅读 · 0 评论 -
验证码处理
验证码的识别url不变,验证码不变请求验证码的地址,获得响应,识别url不变,验证码会变思路:对方服务器返回验证码的时候,会和每个用户的信息和验证码进行一个对应,之后,在用户发送post请求的时候,会对比post请求中发的验证码和当前用户真正的存储在服务器端的验证码是否相同1.实例化session2.使用seesion请求登录页面,获取验证码的地址3.使用...原创 2019-06-23 10:23:04 · 370 阅读 · 0 评论 -
数据提取
非结构化数据处理(文本)正则match 方法:从起始位置开始查找,一次匹配# match 方法用于查找字符串的头部(也可以指定起始位置),它是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果。它的一般使用形式如下:# 其中,string 是待匹配的字符串,pos 和 endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是 0 和 len (字符串长度)。...原创 2019-06-23 10:17:39 · 324 阅读 · 0 评论