首页 文章 精选 留言 我的

精选列表

搜索[自适应爬虫],共4666篇文章
优秀的个人博客,低调大师

【Python】从0开始写爬虫——扒狗东先流产了

上回写到一半临时有事,竟然没有保存到!!!。这几天也是因为家人过来玩。。我也不知道写到哪儿了。我发现狗东这个奸贼很多数据是请求请求再请求,然后才拿到我们看到的数据显示上去的。我尝试了一下找齐这个数据确实有点头疼(我有查到可以用一个东西模拟浏览器去得到我们最终的页面,但是本着练习为主的思想,先不搞这么无脑的东西)。 所以我们暂时先战略性放弃扒狗东。容我再找个好扒一点网站。下面是现在的代码。 这里给出一个BeautifulSoup的文档链接,是中文的,很好懂:BeautifulSoup中文文档 emmmm我们先上京东找个好看的模特: 恋裳蒂莎2018夏季夜场小女人性感后开叉包臀连衣裙紧身诱人主播超短裙 黑色 S 根据我现在的代码,我应该是封装了一下之前的代码,然后已经爬了商品的id、名称和类目。 目录。我不太懂规范的python项目是什么样的。我是在test目录下中测试一些第三方库的api app.py import urllib.request from bs4 import BeautifulSoup header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36' } # 因为有时候得到的是一段 json 或者别的数据,有时候是html,所以我们单纯地先获取数据 def get_data(url, headers=header, charset="utf-8"): req = urllib.request.Request(url=url, headers=headers) rep = urllib.request.urlopen(req) data = rep.read() return data.decode(encoding=charset) # 如果是个html我们就可以用BeautifulSoup解析 def get_soup(url, headers=header, charset="utf-8"): data = get_data(url=url, headers=headers, charset=charset) return BeautifulSoup(data, "html.parser") jd.py from scrapy import app import re header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36' # 'Referer': 'https://item.jd.com/10671563387.html' } url = "https://item.jd.com/27934623028.html" soup = app.get_soup(url, header, "gbk") # 获取BeautifulSoup对象 pid = re.search("[0-9]+", url).group() # 用正则筛选id print("商品id:", pid) title = soup.find("div", class_="sku-name").string.strip() # 爬商品名称 print("商品名称:", title) page_config = soup.find("script", {"charset": "gbk"}).string cat = re.search("(?<=cat:\s\[)[,0-9]*(?=\])", page_config).group() # 用正则匹配到商品类目 print("category: ", cat) 控制台输出。说明是可以爬到这些的

优秀的个人博客,低调大师

用爬虫分析互联网大数据行业薪资情况

前言:随着互联网大数据行业的日渐兴盛,越来越多的人投身其中,也有很多的朋友对此有着浓厚的兴趣,想要投身其中。从本期开始我们将分四期带大家走进互联网大数据行业,分别了解数据挖掘&机器学习、数据分析、算法&深度学习、数据产品经理这四个不同的与大数据相关的职位。 数据来源:我们未来四期的数据主要来源于拉勾网,目前比较火的招聘网站猎聘、boss直聘、拉勾都有比较多的互联网职位介绍。我们基于以下几点原因选择拉勾:1.薪资大多有直接的范围,较少为面议 2. 企业数量较全,基本上涵盖了互联网相关公司 3.url地址相对比较规整,方便进行批量爬取。数据展示页面如下: 该部分使用Python中Selenium爬取,部分代码如下: while True : try : for j in

优秀的个人博客,低调大师

当会Python爬虫遇上会画图的FineBI……

我们平时在用Python爬取网页上的数据时,对爬取到到的数据做数据分析展现有很多种方式,比如可以通过echart图表接口、python提供的第三方库,甚至还可以用matlab工具来进行数据统计和图表可视化展现。 可无论是以上哪一种方式,都需要通过代码来调用Python爬好的数据来进行画图,图表样式属性设置等方面还是比较繁琐的。 同样的问题,有一次小编领导要求我做一份有关于南京房价的数据汇报,需要做到报表里面。数据是没有的,自然而然想到用Python爬,爬好后直接做数据图表粘贴到报表中。但后来发现方法太土,汇报时不好做动态的数据展现(影响小编炫技装逼)。于是乎就想办法,将爬取到的数据导入到报表或者BI系统里面,利用BI本身的一些分析功能,联动着其他数据做展现。于是就有了本篇“Python爬数据,FineBI画图”的文章。想学习可以加Python学习(q-u-n )-227-435-450 即可获取,内附:开发工具和安装包,以及系统学习路线图 关于FineBI 这是一个可视化的自助式BI工具,整个操作就是导数据/连数据库——处理数据(可视化ETL)选择图表——拖数据字段——可视化展现&美化,操作简单上手快。小编只是用了其可视化的一隅功能,多数情况下,这个工具都是拿来做可视化报表,对接企业大数据平台,做企业数据运营分析用。 原理介绍 废话不多说,直接贴出操作。 因为想看看南京房价数据,但是网站上的很多数据都是以HTM5的形式进行呈现的,所以考虑通过Python来进行网页数据抓取和入库,数据分析方面通过FineBI工具直接连接数据库,分析和可视化呈现。 整体的思路: 数据层方面先通过Python抓取到WEB端的网页数据,之后对爬取到数据进行解析再而存储到MYSQL数据入库; 最后应用层的数据处理、数据计算统计、图表可视化呈现等工作全都交由FineBI工具来做。 操作步骤 1.引入相关python库包 首先新建python工程,引入本次爬取网页数据和写入MySQL数据库所需要的requests、pymysql、bs4这三个包: 2.获取网页数据 然后如下图所示,通过编写Python代码获取到某一个房产网页的南京售房平台的网页信息: 3.HTML标签解析 接着再对DIV样式下的HTML数据包进行逐一解析,获取到想要的房源名称、地址、小区、户型、面积、总价、单价、区域等数据: 其中对应网页的标签样式可以通过浏览器的F12开发选项进行快速获取,如下图所示的定位房源信息截图,我们只需要右键浏览器在所需要获取标签样式名称的地方点击检查元素即可(房源名称的标签即位house-title的title元素)。 4.MySQL数据回写 解析好数据之后,再将解析好的数据写入到MySQL数据库中: 循环遍历该平台在南京最近七天的网页售房信息数据,页面17页,共计377条数据: 5.安装FineBI&&验证数据入库 通过FineBI官网下载并按照引导安装好软件: 直接通过FineBI提供的数据配置端的功能,添加SQL数据集(或者直接添加表也行),查看和验证刚刚爬取并且入库的数据是否已经真正成功入库到MySQL中了。 如下图所示,Python果然不辱使命,我要的该平台的七天南京的房价售房数据都已经成功写入到了我的MySQL数据库中了。 6.FineBI可视化制作&成果展示 然后思考需要分析展现哪些内容,比如“南京各小区房价分布”、“房型价格分析”、“各区域房价分析”.....通过FineBI制作图表展现。 下面这个动图展示了一个图表的制作,其他都类似的,可参考。不懂可参见FineBI官网的帮助文档。 GIF 花了十分钟,就将我想要看的南京售房信息(房源面积均价、套房总均价、小区房价四象限分布图、区域房价分析、房型价格分析)以可视化的形式呈现出来了。 最后就是本次成果展示啦,也晒出来跟大家分享下,如下所示: 1.目前南京房源均价为3.78万每平方米,总均价为401.38万,总体上还是比较高的。 2.建邺区房价最高,果然房价还是紧跟国家政策啊,建邺目前城区开发建设政府的扶持力度在南京都是走在前面的。鼓楼、玄武、秦淮分别排在二、三、四的位置,雨花台和江宁房价相对较低,综合市区位置来看,还是秦淮区性价比最高啊 。 3.房型方面,6室3厅的豪华大宅总均价接近一千万,比如紫檀雅居、碧水湾别墅、滨江奥城听雨苑这一类土豪小区,多集中在建邺和鼓楼区域;一室一厅的房子均价大概在150万的样子,比如托乐嘉单身公寓、经纬城市花园等小区,适合单身贵族或者情侣小夫妇居住,南京各个大区都有;比较主流的三室一厅房价在300万左右,比如乔虹苑小区、良辰美景家园、白云园,多集中在秦淮和鼓楼区域。 后记 Python完成对网页数据的抓取和解析存储之后,配合FineBI强大的数据可视化呈现能力则圆满地完成了本次对南京售房数据的统计和分析需求,绝对推荐!

优秀的个人博客,低调大师

用Python做爬虫时相关tips的参考文章集锦(refreshing)

1.Python 3.x中的urllib的改动 2.Python的hasattr() getattr() setattr() 函数使用方法详解 3.正则表达式 re.findall 用法 注意: 用$符号表示以html结尾的字符串返回,判断是否字符串结束的字符串 只有字符串能匹配模板定义,才会返回模板,否则返回空list(多少一个字母也不行) 符号^表示匹配以https开头的的字符串返回, 道理相似,注意more0例子跟more的区别 4.'module' object is not callable 模块名和函数名一样了,负责调用的代码解析的是模块名,不是函数名,因而发生错误。 5.cannot use a string pattern on a bytes-like object 加上object=object.decode('utf-8')#python3这句代码 6.itertools无限迭代器

优秀的个人博客,低调大师

一个实现批量抓取淘女郎写真图片的爬虫

淘女郎,也被很多人称作“网络模特”,就是专门给淘宝、天猫等线上商家拍摄图片的平面模特。 我们将用Python3和Selenium Webdriver抓取每一个美眉的个人主页内的写真图片,把每一个美眉的写真图片按照文件夹保存到本地。 先说一下网页爬取的一般步骤: 1.查看目标网站页面的源代码,找到需要爬取的内容2.用正则或其他如xpath/bs4的工具获取爬取内容3.写出完整的python代码,实现爬取过程 查看网站源码,火狐浏览器右键-查看源代码即可获取: 代码编写的关键步骤: ①需要用到的模块 ②解析目标网页的 Html 源码 bsObj = BeautifulSoup(driver.page_source, parser) ③用正则表达式获取美女图片 imagesUrl = re.findall('\/\/gtd\.alicdn\.

优秀的个人博客,低调大师

DC学院爬虫学习笔记(五):使用pandas保存豆瓣短评数据

保存数据的方法: open函数保存 pandas包保存(本节课重点讲授) csv模块保存 numpy包保存 使用open函数保存数据 1. open函数用法 使用with open()新建对象 写入数据 import requests from lxml import etree url = 'https://book.douban.com/subject/1084336/comments/' r = requests.get(url).text s = etree.HTML(r) file = s.xpath('//div[@class="comment"]/p/text()') with open('pinglun.txt', 'w', encoding='utf-8') as f: #使用with open()新建对象f for i in file: # print(i) f.write(i) #写入数据,文件保存在当前工作目录 可以使用以下方法得到当前工作目录或者修改当前工作目录 import os os.getcwd()#得到当前工作目录 'C:\\Users\\Dell' os.chdir()#修改当前工作目录,括号中传入工作目录的路径 2. open函数的打开模式 使用pandas保存数据 1. Python数据分析的工具包 numpy: (Numerical Python的简称),是高性能科学计算和数据分析的基础包 pandas:基于Numpy创建的Python包,含有使数据分析工作变得更加简单的高级数据结构和操作工具 matplotlib:是一个用于创建出版质量图表的绘图包(主要是2D方面) 常见的导入方法: import pandas as pd #导入pandas import numpy as np #导入numpy import matplotlib.pypolt as plt #导入matplotlib 2. pandas保存数据到Excel 导入相关的库 将爬取到的数据储存为DataFrame对象(DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量) to_excel() 实例方法:用于将DataFrame保存到Excel df.to_excel('文件名.xlsx', sheet_name = 'Sheet1') #其中df为DataFrame结构的数据,sheet_name = 'Sheet1'表示将数据保存在Excel表的第一张表中 read_excel() 方法:从excel文件中读取数据 pd.read_excel('文件名.xlsx', 'Sheet1', index_col=None, na_values=['NA']) 3. pandas保存数据到csv文件 导入相关的库 将数据储存为DataFrame对象 保存数据到csv文件 import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(6,3)) #创建随机值并保存为DataFrame结构 print(df.head()) df.to_csv('numpppy.csv') 0 1 2 0 0.028705 -0.351902 -0.821870 1 0.279090 0.577875 -1.283121 2 1.563792 -0.146931 -0.587794 3 -0.272610 -0.342182 0.847883 4 1.380459 0.462965 -1.799529 实战 爬取《小王子》豆瓣短评的数据,并把数据保存为本地的excel表格 import requests from lxml import etree url = 'https://book.douban.com/subject/1084336/comments/' r = requests.get(url).text s = etree.HTML(r) file = s.xpath('//div[@class="comment"]/p/text()') import pandas as pd df = pd.DataFrame(file) df.to_excel('pinglun.xlsx') 爬取《小王子》豆瓣短评前5页的短评数据 import requests from lxml import etree import pandas as pd urls=['https://book.douban.com/subject/1084336/comments/hot?p={}'.format(str(i)) for i in range(1, 6, 1)] #通过观察的url翻页的规律,使用for循环得到5个链接,保存到urls列表中 pinglun = [] #初始化用于保存短评的列表 for url in urls: #使用for循环分别获取每个页面的数据,保存到pinglun列表 r = requests.get(url).text s = etree.HTML(r) file = s.xpath('//div[@class="comment"]/p/text()') pinglun = pinglun + file df = pd.DataFrame(pinglun) #把pinglun列表转换为pandas DataFrame df.to_excel('pinglun.xlsx') #使用pandas把数据保存到excel表格

优秀的个人博客,低调大师

分享个自己Python爬虫时的浏览器标识库

本人使用的Python3版本,python2未做测试 如有问题很可能出在 toObj函数上toObj函数具体参考:https://stackoverflow.com/questions/1305532/convert-Python-dict-to-object UserAgent.py class toObj(object): def __init__(self, d): for a, b in d.items(): if isinstance(b, (list, tuple)): setattr(self, a, [toObj(x) if isinstance( x, dict) else x for x in b]) else: setattr(self, a, toObj(b) if isinstance(b, dict) else b) ''' Android 设备 ''' Android = toObj({ "Xiaomi": { "Id": "Xiaomi", "Name": "小米手机", "UserAgent": "Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0" }, "Meizu": { "Id": "Meizu", "Name": "魅族手机", "UserAgent": "JUC (Linux; U; 2.3.5; zh-cn; MEIZU MX; 640*960) UCWEB8.5.1.179/145/33232" }, "Nexus7": { "Id": "Nexus7", "Name": "Nexus 7 (Tablet)", "UserAgent": "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19" }, "AndroidGalaxyS3": { "Id": "AndroidGalaxyS3", "Name": "Samsung Galaxy S3 (Handset)", "UserAgent": "Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" }, "AndroidGalaxyTab": { "Id": "AndroidGalaxyTab", "Name": "Samsung Galaxy Tab (Tablet)", "UserAgent": "Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" } }) ''' 国产浏览器 ''' China = toObj({ "360se": { "Id": "360se", "Name": "360安全浏览器", "UserAgent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)" }, "360chrome": { "Id": "360chrome", "Name": "360极速浏览器", "UserAgent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360Chrome)" }, "liebao": { "Id": "liebao", "Name": "猎豹浏览器", "UserAgent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 LBBROWSER" }, "ucpc": { "Id": "ucpc", "Name": "UC浏览器电脑版", "UserAgent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 UBrowser/5.1.2238.18 Safari/537.36" }, "uc": { "Id": "uc", "Name": "UC浏览器手机版", "UserAgent": "UCWEB/2.0 (iOS; U; iPh OS 4_3_2; zh-CN; iPh4) U2/1.0.0 UCBrowser/8.6.0.199 U2/1.0.0 Mobile" }, "sougou": { "Id": "sougou", "Name": "搜狗浏览器", "UserAgent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0" }, "baidu": { "Id": "baidu", "Name": "百度浏览器", "UserAgent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 BIDUBrowser/7.5 Safari/537.36" }, "maxthon": { "Id": "maxthon", "Name": "遨游浏览器", "UserAgent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)" }, "qq": { "Id": "qq", "Name": "QQ浏览器", "UserAgent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36 QQBrowser/9.0.2229.400" }, "mqq": { "Id": "mqq", "Name": "QQ浏览器手机版", "UserAgent": "MQQBrowser/3.6/Adr (Linux; U; 4.0.3; zh-cn; HUAWEI U8818 Build/U8818V100R001C17B926;480*800)" }, "wechat": { "Id": "wechat", "Name": "微信内置浏览器", "UserAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 MicroMessenger/5.0.1" } }) ''' 搜索引擎浏览器 ''' Spider = toObj({ "Baidu": { "Id": "Baidu", "Name": "百度PC", "UserAgent": "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" }, "Baidum": { "Id": "Baidum", "Name": "百度移动端", "UserAgent": "Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" }, "BingBot": { "Id": "BingBot", "Name": "BingBot (Bing's spider)", "UserAgent": "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" }, "Googlebot": { "Id": "Googlebot", "Name": "Googlebot (Google's spider)", "UserAgent": "Googlebot/2.1 (+http://www.googlebot.com/bot.html)" }, "Slurp": { "Id": "Slurp", "Name": "Slurp! (Yahoo's spider)", "UserAgent": "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)" } }) ''' Mac OS ''' Safari = toObj({ "SafariMac": { "Id": "SafariMac", "Name": "Safari on Mac", "UserAgent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27" }, "SafariWin": { "Id": "SafariWin", "Name": "Safari on Windows", "UserAgent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27" }, "SafariiPad": { "Id": "SafariiPad", "Name": "Safari on iPad", "UserAgent": "Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3" }, "SafariiPhone": { "Id": "SafariiPhone", "Name": "Safari on iPhone", "UserAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3" } }) ''' Opera 欧朋 ''' Opera = toObj({ "OperaMac": { "Id": "OperaMac", "Name": "Opera on Mac", "UserAgent": "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.9.168 Version/11.52" }, "OperaWin": { "Id": "OperaWin", "Name": "Opera on Windows", "UserAgent": "Opera/9.80 (Windows NT 6.1; WOW64; U; en) Presto/2.10.229 Version/11.62" } }) ''' Chrome ''' Chrome = toObj({ "ChromeAndroidMobile": { "Id": "ChromeAndroidMobile", "Name": "Chrome on Android Mobile", "UserAgent": "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19" }, "ChromeAndroidTablet": { "Id": "ChromeAndroidTablet", "Name": "Chrome on Android Tablet", "UserAgent": "Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19" }, "ChromeMac": { "Id": "ChromeMac", "Name": "Chrome on Mac", "UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36" }, "ChromeUbuntu": { "Id": "ChromeUbuntu", "Name": "Chrome on Ubuntu", "UserAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.10 Chromium/27.0.1453.93 Chrome/27.0.1453.93 Safari/537.36" }, "ChromeWin": { "Id": "ChromeWin", "Name": "Chrome on Windows", "UserAgent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36" }, "ChromeiPhone": { "Id": "ChromeiPhone", "Name": "Chrome on iPhone", "UserAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/27.0.1453.10 Mobile/10B350 Safari/8536.25" } }) ''' IE ''' IE = toObj({ "IE10": { "Id": "IE10", "Name": "Internet Explorer 10", "UserAgent": "Mozilla/5.0 (compatible; WOW64; MSIE 10.0; Windows NT 6.2)" }, "IE6": { "Id": "IE6", "Name": "Internet Explorer 6", "UserAgent": "Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.2)" }, "IE7": { "Id": "IE7", "Name": "Internet Explorer 7", "UserAgent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)" }, "IE8": { "Id": "IE8", "Name": "Internet Explorer 8", "UserAgent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)" }, "IE9": { "Id": "IE9", "Name": "Internet Explorer 9", "UserAgent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" } }) ''' Firefox ''' Firefox = toObj({ "FFAndroidHandset": { "Id": "FFAndroidHandset", "Name": "Firefox on Android Mobile", "UserAgent": "Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0" }, "FFAndroidTablet": { "Id": "FFAndroidTablet", "Name": "Firefox on Android Tablet", "UserAgent": "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0" }, "FFMac": { "Id": "FFMac", "Name": "Firefox on Mac", "UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" }, "FFUbuntu": { "Id": "FFUbuntu", "Name": "Firefox on Ubuntu", "UserAgent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20130331 Firefox/21.0" }, "FFWin": { "Id": "FFWin", "Name": "Firefox on Windows", "UserAgent": "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0" } }) ''' Windows Phone ''' WinPhone = toObj({ "Win7Phone": { "Id": "Win7Phone", "Name": "Windows Phone 7", "UserAgent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; LG; GW910)" }, "Win75Phone": { "Id": "Win75Phone", "Name": "Windows Phone 7.5", "UserAgent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)" }, "Win8Phone": { "Id": "Win8Phone", "Name": "Windows Phone 8", "UserAgent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)" } }) ''' iOS ''' iOS = toObj({ "iPad": { "Id": "iPad", "Name": "iPad", "UserAgent": "Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3" }, "iPhone": { "Id": "iPhone", "Name": "iPhone", "UserAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3" }, "iPod": { "Id": "iPod", "Name": "iPod", "UserAgent": "Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A101a Safari/419.3" } }) Other = toObj({ "BlackBerry": { "Id": "BlackBerry", "Name": "BlackBerry - Playbook 2.1", "UserAgent": "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+" }, "MeeGo": { "Id": "MeeGo", "Name": "MeeGo - Nokia N9", "UserAgent": "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13" } }) Default = Chrome.ChromeWin.UserAgent 使用: import UserAgent as ua import requests print("默认标识",ua.Default) print("小米标识",ua.Android.Xiaomi.UserAgent) _headers={ 'Accept-Language': 'zh-CN,zh;q=0.8', 'Content-Type': 'text/html;Charset=utf-8', "User-Agent":ua.Android.Xiaomi.UserAgent } rd = requests.get("http://www.jianshu.com/", params=None, headers=_headers) rd.encoding = 'utf-8' print(rd.text)

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册