KHTML

python3 爬虫百度贴吧

纵然是瞬间 提交于 2020-12-19 12:00:17
import urllib.request import urllib.parse from lxml import etree def loadPage(url): """ 作用:根据url发送请求,获取服务器响应文件 url: 需要爬取的url地址 """ #print url #美女 # headers = {"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0)AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"} request = urllib.request.Request(url) html = urllib.request.urlopen(request).read() # 解析HTML文档为HTML DOM模型 content = etree.HTML(html) #print content # 返回所有匹配成功的列表集合 link_list = content.xpath('//div[@class="t_con cleafix"]/div/div/div/a/@href') #link_list = content.xpath('//a[@class="j_th_tit"]/@href') for

python爬虫的基本框架

和自甴很熟 提交于 2020-12-04 04:01:52
1.爬虫的基本流程: 通过requests库的get方法获得网站的url 浏览器打开网页源码分析元素节点 通过BeautifulSoup或者正则表达式提取想要的数据 储存数据到本地磁盘或者数据库 2.正式开工啦 url = “http://www.jianshu.com” page = requests.get(url) #发现返回状态码403,说明有问题出现(除200外,其他的都是有问题的) #这个时候查看一下爬虫的robots协议,的确有些问题,解决方案如下: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} 获取html页面 page = requests.get(url, headers = headers) demo = page.text #记住,有时候有可能出现编码问题 page.encoding = page.apparent_encoding #将获取的内容转换为BeautifulSoup格式,并将html.parser作为解释器(熬一锅汤) soup = BeautifulSoup(demo, 'html.parser')

scrapy框架学习

依然范特西╮ 提交于 2020-12-01 02:48:11
- 一 什么是scrapy?    - Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。   - 安装      - linux: pip3 install scrapy      - windows:        - 1) pip3 install wheel        - 2) 下载Twisted ( http: / / www.lfd.uci.edu / ~gohlke / pythonlibs / #twisted )        - 3) 进入下载目录, 执行 pip3 install Twisted‑ 17.1 . 0 ‑cp35‑cp35m‑win_amd64.whl        - 4) pip3 install pywin32        - 5) pip3 install scrapy - 二 使用    - 1) 创建项目:scrapy startproject 项目名称    - 2) 创建应用程序:      - 先进入项目目录: cd 项目名      - scrapy genspider 应用名 爬取网页的起始url:      - 生成的初始文件 # -*- coding: utf-8

python 网络爬虫requests处理cookie,代理IP,云打码介绍

岁酱吖の 提交于 2020-11-29 16:12:20
一。基于requests模块的cookie操作(session处理cookie) cookie概念:当用户通过浏览器首次访问一个域名时,访问的web服务器会给客户端发送数据,以保持web服务器与客户端之间的状态保持,这些数据就是cookie。 cookie作用:我们在浏览器中,经常涉及到数据的交换,比如你登录邮箱,登录一个页面。我们经常会在此时设置30天内记住我,或者自动登录选项。那么它们是怎么记录信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP服务器设置的,保存在浏览器中,但HTTP协议是一种无状态协议,在数据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接。就像我们去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们办了积分卡之后,超市就有了我们的消费信息。cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程。 cookie介绍 import requests from lxml import etree headers = { ' User-Agent ' : ' Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome

爬虫之图片懒加载技术及js加密

a 夏天 提交于 2020-11-28 06:24:46
图片懒加载 图片懒加载概念: 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。 网站一般如何实现图片懒加载技术呢?在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。站长素材案例后续分析:通过细致观察页面的结构后发现,网页中图片的链接是存储在了src2这个伪属性中 案例: 1. 抓取站长素材http://sc.chinaz.com/中的图片数据  import requests  from urllib import request  import re  import os #1.检查页面数据是否为动态加载出来的 #2.获取页面源码数据 if not os.path.exists('tupian'): os.mkdir('tupian') headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0;

http响应总结:常见http响应错误总结

时间秒杀一切 提交于 2020-11-26 03:39:16
<div id="content_views" class="markdown_views"> <!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p>工作中经常会被同事问这个http请求为什么调不通,我虽然能解释清楚错误是什么,但是没有总结过,想到刚开始时,也是看了别人的文章才会的,所以总结一下,贡献一下自己的经验。</p> <h2 id="http-404-响应">http 404 响应</h2> <p>404响应可以说是,在java web中最常见的错误了,基本上大家都理解问题产生的原因,即找不到这个资源。</p> <ul> <li><strong>路径匹配错误导致的404</strong></li> </ul> <p>比如说请求的访问路径为<a href="http://localhost:8080/project/test" rel="nofollow"

计算机网络 HTTP协议

余生颓废 提交于 2020-11-24 06:28:00
HTTP协议( Hypertext transfer protocol 超文本传输协议 ) 一、预备知识: 1、HTTP协议是应用层协议,定义的是传输数据的内容的规范。HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答标准。通过使用网页浏览器、网络爬虫或者其他工具,客户端发起一个HTTP 请到服务器上的指定端口(默认80)。服务器上存储着一些资源,如HTML文件和图像等 2、HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议 3、HTTP默认的端口号为80,HTTPS的端口号为443 4、HTTP协议是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议 5、URL(Uniform Resource Locator-统一资源定位符),URL是万维网(WWW)上的每一信息资源对应的统一的且在网上唯一的地址。URL4部分组成:协议、主机、端口(省略时使用方案的默认端口)、路径。URL格式:protocol :// hostname[:port] / path / [;parameters][?query]#fragment 6、URL中#号(井号)的作用是页面定位符。因为#是用来指导浏览器动作的,对服务器端完全无用,所以HTTP请求不包括#

python实现抖音多线程下载无水印视频【附源码】

风格不统一 提交于 2020-11-22 14:40:29
昨天发了一个无水印解析,评论说想要多线程下载,还是比较简单的。 py文件同目录下创建url.txt,把链接一行一行复制进去,就能批量下载。 代码中的延时不能去掉,由于是多线程,速度较快,延时很重要。 import re import requests from concurrent import futures import time headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'} def download(_url): try: time.sleep(0.3) html3 = requests.head(_url,headers = headers) download_url = html3.headers['Location'] video_file = requests.get(download_url,headers = headers) file_name = download_url.split('=')[-1] print(file_name) except: print('Error') with open(file_name +

Python爬取抖音视频

我们两清 提交于 2020-11-22 14:23:02
最近在研究Python爬虫,顺便爬了一下抖音上的视频,找到了哥们喜欢的小姐姐居多,咱们给他爬下来吧. 最终爬取结果 好了废话补多说了,上代码! 1 # https://www.iesdouyin.com/aweme/v1/aweme/favorite/?user_id=86371592618 2 # &count=21&max_cursor=0&aid=1128&_signature=fBZqMxAcIH.WOSqz4s5eTHwWai&dytk=6849c66ff2a629554679fe#e4ad1343a5 3 # 分析url https://www.iesdouyin.com/share/user/86371592618 4 # 最终获取用户喜欢 5 import requests 6 7 url= " https://www.iesdouyin.com/share/user/86371592618 " 8 # 抖音本身反爬虫措施 9 headers= { 10 ' user-agent ' : ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 ' 11 } 12 # 获得dytk 13

使用Request+正则抓取猫眼电影(常见问题)

巧了我就是萌 提交于 2020-11-22 06:52:07
目前使用Request+正则表达式,爬取猫眼电影top100的例子很多,就不再具体阐述过程! 完整代码github:https://github.com/connordb/Top-100 总结一下,容易出错的问题有: 1.没有加请求头,导致输出没有具体信息! headers={ "User-Agent": "Mozilla / 5.0(Windows NT 6.1) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 67..3396.99 Safari / 537.36" } 2.正则出问题: 这个没有好的办法,只能写一点,然后打印输出,看看是否正确输出,常见的问题:另起一行要有+号;另起一行的时候头尾要有引号; 具体要抓取的内容要用(); pattern=re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?title="(.*?)".*?star">(.*?)</p>.*?setime">(.*?)</p>' +'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>',re.S) 3.写入文件出现问题: 在写入文件的时候,当你输入f.write(content)会报错,报错内容显示只能写入字符串格式,而不是字典格式,此时解决办法是写入 f.write(json