b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java 查看线程状态 爬虫相关(3)

电脑杂谈  发布时间:2018-02-14 08:32:49  来源:网络整理

举例:运行了一个爬虫程序,就会执行一个进程。CPU会有很多时间切片,给每个执行的线程分配一个时间切片,一个时间切片内只能执行一个任务。

同一个进程之间的内存空间是共享,不同进程之间的内存空间不共享。

一个线程在使用进程的内存空间时,其他线程必须等待结束,才能使用这块内存空间。

"互斥锁" 防止多个线程同时访问一块内存空间。

多线程:表示一个程序可以同时并发执行多个任务。

Python的多线程:

GIL(全局解释器锁):比如某个线程想要执行任务,必须获取GIL,在Python一个进程里,只有一个GIL。

线程必须拥有GIL才能执行任务,没有GIL的线程就不允许执行任务。

Python的多线程并不是真正的多线程,不能充分利用CPU的资源。

多进程:密集CPU运算(大量的并行运算),可以使用multiprocessing。

缺陷:多个进程之间的通信成本很高,对于需要进行大量数据通信的任务,就不适合多进程。

多线程:密集I/O处理(网络I/O,文件读写I/O),threading.Thread,multiprocessing.dummy、

缺陷:同一个CPU时间切片只能运行一个线程,优势:线程和线程之间的通信非常方便。java 查看线程状态

协程:处理了进程和线程之间切换和创建的开销,协程爬虫。genvent

for //div[@class=‘info‘]

//span[@class=‘title‘]/text()

//span[@class=‘rating_num‘]/text()

所有页码

//div[@class=‘paginator‘]/a/@href

https://movie.douban.com/top250

爬取优先级:

PC > 移动端 > HTML5 > APP

//input[@name=‘form_email‘]

form_password

soup = BeautifulSou(driver.page_source, "lxml")

# 主播名 class

soup.find_all("span", attrs = {"class" : "dy-name ellipsis fl"})

# 房间名 class

soup.find_all("h3", attrs = {"class" : "ellipsis"})

# 观众人数

soup.find_all("span", attrs = {"class" : "dy-num fr"})

driver.find_element_by_class_name("shark-pager-next").click()

# 等于 -1 表示没到最后一页

# 不等于 -1 表示到了最后一页

if driver.page_source.find("shark-pager-disable-next") != -1:

break

Scrapy 部分:

第一阶段:urllib2/requests re lxml BeautifulSoup json/jsonpath...

瑞士...

第二阶段:Scrapy:擅长处理大量页面

屠龙刀...

爬虫的八字真言:模拟请求,处理响应。

工作的好伙伴:

baidu:遇到问题百度一下

google:百度不到就google一下

stackoverflow:程序员的问答网站

官方文档

scrapy各组件工作:

spider : 接收响应,经过提取后返回:1. 继续发送的请求->调度器 2. 需要存储的数据-> 管道

调度器:将请求排序、去重、入队列、出队列。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-77069-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...