爬虫notes

‘’’

爬取思路:
1、requests(url)
2、requests + json
3、requests + XPath
4、requests + BeautifulSoup
5、selenium
6、scrapy框架
7、scrapy-redis 及分布式

===============================================
OS:
import os
os.system(“C: && p.txt”)
os.system(“ping 127.0.0.1”)

===============================================
requests:
requests.get(url, headers=headers, data={’’:’’}, proxies=proxies)

===============================================
Proxies:
proxies = {‘http’: ‘124.207.82.166:8008’} # 47.98.129.198
response = requests.get(request_url, proxies=proxies) # 发起请求

===============================================
File:
with open(path,‘w’) as f:
f.write(text)

===============================================
Threading:
import threading
threading.Thread(target=fun, kwargs={‘list_url’:list_url,‘path_order’:path_order1}).start()

===============================================
requests、json:
1.data = json.load(open(“package1.json”,encoding=“utf-8”))
response = requests.get(url, headers=headers)
print(response.text)

2.response = requests.get(url)
data = response.text
obj = json.loads(data)

===============================================
requests、XPath
from lxml import etree
response = requests.get(list_url, headers=headers)
content = response.content
selector = etree.HTML(scontent) # 将页面装入etree树
items = selector.xpath(path_order) # 按照XPath查找树,返回迭代,
title = item.xpath("./div/p[1]/a/text()")[0].strip() # 迭代对象item可继续用XPath查找

===============================================
requests、BeautifulSoup
from bs4 import BeautifulSoup
response = requests.get(url)
html= response.text
soup = BeautifulSoup(html, ‘lxml’)
soup_str = soup.prettify() # 标准化html
tag = soup.b
tag的一系类操作

===============================================
selenium: 安装对应chrome版本的 Selenium driver https://www.cnblogs.com/JHblogs/p/7699951.html
并且安装依赖库 pip install selenium
from selenium import webdriver
chromedriver = “G:/4Anaconda/chromedriver.exe” # 驱动若在python路径下 即可省略这一步
browser = webdriver.Chrome(chromedriver)
#打开一个网页
browser.get(“http://www.baidu.com”)
browser.find_element_by_id(“kw”).send_keys(“selenium”)
browser.find_element_by_id(“su”).click()
browser.title
browser.set_window_size(480, 800) #参数数字为像素点
browser.back()
browser.forward()
#退出并关闭窗口的每一个相关的驱动程序

browser.quit()

#关闭当前窗口
#browser.close()

隐式等待

from selenium import webdriver

browser = webdriver.Chrome()

这里用implicitly_wait()实现了隐式等待

browser.implicitly_wait(10)
browser.get(‘https://www.zhihu.com/explore’)
input = browser.find_element_by_class_name(‘zu-top-add-question’)
print(input)

显示等待
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser = webdriver.Chrome()
browser.get(‘https://www.taobao.com/’)
wait = WebDriverWait(browser, 10)
input = wait.until(EC.presence_of_element_located((By.ID, ‘q’)))
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ‘.btn-search’)))
print(input, button)

‘’’

‘’’
#一、 创建scrapy项目(cmd):
scrapy startproject weibospider
cd weibospider

    #二、 创建sipder语句cmd:scrapy genspider WeiboSpider image.baidu.com拒绝爬虫协议 ROBOTSTXT_OBEY = False 运行爬虫 scrapy crawl baiduimg#三、 设置数据结构name = scrapy.Field()#四、 导入 数据 from hotnewsSpider.items import WeiboSpiderItem使用 weiboitem = WeiboSpiderItem()weiboitem['name'] = '123'返回 yield weiboitem#五、 发送请求传递 (在parse中)yield scrapy.Request(url=url, headers=self.headers, cookies=self.cookies, callback=self.clickFindMore)# 发送请求传递并回调,加参 callbackyield scrapy.Request(link,callback=self.parse_detail)#六、重写初始化请求def start_requests(self):for url in self.urls:yield scrapy.Request(url=url, headers=self.headers, cookies=self.cookies, callback=self.parse)#七、接收responsedef parse(self,response):pass

‘’’

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 电量优化

Android系统上App的电量消耗主要由cpu、wakelock、数据传输(流量和wifi)、wifi运行、gps、other senior组成,而耗电异常也是由于这几个模块的使用不当。 BroaddcastReceiver 为了减少应用损耗的电量,代码中需要尽量避免无用的操作代码的执行 …

如何下载手机的App Store中不再存在的应用程序

Smartphone app stores are well established at this point, and as much as we love to see new apps become available, that also means the inevitable: sometimes apps go away. Here’s what you can do if your favorites disappear. 在这一点上,智能手机应…

Q_learning简介与实例

1、算法思想 QLearning是强化学习算法中value-based的算法,Q即为在某一环境下,Q(state,action)在某一时刻的 s 状态下(s∈S),采取 动作a (a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回…

吴颖二:12.27 午评 地缘政治一波未平一波又起,千三可到?

前言:圣诞节后首个交易日,金银油均走出了大行情。美国因导弹项目制裁朝鲜两名官员,地缘局势再升温黄金本周能否突破1300关口?油价刷新两年半高位后,一个重要指标却已暗示短期内或面临风险…… 朝鲜局势进一步恶化的同时…

2-1 gradle安装

因为Gradle是基于JVM的,所以一定要确保本机已经安装了JDK,我们可以通过java -version来验证一下是否已经安装了JDK。 bin目录里面是两个可执行文件,一个是Windows下面的可执行文件,还有一个就是类Unix文件系统的可执行文件。所有的…

Django中session和cookie简单的使用

一、简单的理解 session和cookie是request下的两个对象,操作他们的值就是在操作字典,设置他们的属性就是调用方法。 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。Web应用程序是使用HTTP协议传输…

摄影中的曝光补偿是什么?

When you use your camera in some automatic modes like Program—or one of the semi-manual modes like Aperture Priority or Shutter Speed Priority—you don’t give up total control over everything: you can still control the exposure using exposure compensatio…

ajax回调打开新窗体防止浏览器拦截方法

2019独角兽企业重金招聘Python工程师标准>>> 问题剖析: function click_fun(){ window.open("www.baidu.com");//能打开 $.ajax({ url: ${pageContext.request.contextPath}/activity/savePrizes.htm, type: post, dataType: json, data: data…

ES6学习--对象属性的遍历

ES6一共有5种方法可以遍历对象的属性。 (1)for...in for...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。 (2)Object.keys(obj) Object.keys返回一个数组,包括对象自身的&#xff…

多点认证wi-fi_准备使用Wi-Fi 6:认证将于2019年第三季度启动

多点认证wi-fiThe Wi-Fi Alliance already announced Wi-Fi 6 back in October. Today, it’s announcing the details of the Wi-Fi 6 certification process, which will launch in the third quarter of 2019. Expect many new Wi-Fi 6 devices later this year. Wi-Fi联盟已…

jQuery初识和常用事件(一)

文章目录一、jQuery二、入口函数三、选择器选择器小结 ★全部选择器参考 ☆四、常用的 jQuery 事件方法事件写法鼠标事件元素事件键盘事件文档/窗口事件全部事件方法参考 ☆五、效果事件显示与隐藏:hide,show,toggle淡入和淡出:fa…

nginx内嵌变量

FORWARD:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html#variables ngx_http_core_module模块支持内嵌变量,变量名与Apache服务器对应。 首先,这些变量可以表示客户端的请求头字段,诸如$http_user_agent、$ht…

pdf文档遇到了共享冲突_如何将链接共享为PDF格式的Google文档链接

pdf文档遇到了共享冲突Using Google Docs is a great way to collaborate on and share documents. Sometimes, though, you want to provide somebody with a PDF instead of an editable document. Google Docs now lets you edit your sharing link to provide a PDF. Best …

Visual Studio 2019 preview中体验C# 8.0新语法

准备工作: Visual Studio 2019 Preview版本中并没有包含所有的C# 8.0的新功能,但目前也有一些可以试用了。在开始之前,需要进行入两项设置: 将Framework设置为.net core 3.0 将C#语法设置为8.0 也可以直接编辑.csproj文件&#x…

jQuery 对HTML的操作(二)

文章目录一、jQuery获取、设置HTML标签的内容和属性获得内容 - text()、html() 以及 val()获取属性 - attr(),prop()二、增删 HTML 的内容增加删除三、操作CSSaddClass 添加removeClass 删除toggleClass 切换css 获取与设置所有操作html、css方法参考 ☆四、操作元素…

roku能不能安装软件_如何在Roku中使用Google Assistant

roku能不能安装软件As more of our devices connect to each other, it’s always nice to know that different products from different companies work together. A Chromecast isn’t expensive, but being able to use your TV directly with Google Assistant is better.…

在线建立或重做mysql主从复制架构方法(传统模式和GTID模式)【转】

mysql主从复制架构,是mysql数据库主要特色之一,绝大多数公司都有用到。 而GTID模式是基于事务的复制模式的意思,发展到现在也是越来越多人用。 以前很多文章,介绍搭建mysql主从复制架构,是需要停止应用服务来做的,对于生产环境&am…

面试学习资料

1 Java面试资料总结 (github推荐指数高) 2 后端架构师 1. 综合 《Java 面试题 —— 老梁 Java 面试通关要点汇总集》《Java 面试题 —— 老徐 Java 初中级准备的面试题》《Java 面试题 —— 零度 Java 面试题系列》《Java 面试题 —— 东黄的学习方法和面…

jQuery对Ajax的封装应用(三)

文章目录一、Ajax二、load三、ajax(参数),get,set$.ajax$.ajax的get、post简写形式四、ajax全部方法参考 ☆一、Ajax AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新。…

如何使用卡巴斯基急救盘清理感染的PC

When you’re dealing with a PC that is completely infected in viruses, sometimes the best thing to do is reboot into a rescue disk and run a full virus scan from there. Here’s how to use the Kaspersky Rescue Disk to clean an infected PC. 当您要处理一台完全…