Skip to content

Wjun0/jd_mobile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jd_mobile

get jd mobile info

1,获取了京东手机的信息,目前获取数据时,js获取当前用户的地区是写死的,但不影响数据爬取。
2,使用多进程爬取数据,不能将保存数据的初始化连接放到init中。
3,使用gevent协程爬取数据,效率比较高,比多进程高几倍,参考gevent_mobile.py

遇到的坑

1,多进程中的代码不执行,原因是数据库的连接放到了init中,由于多进程不共享数据造成的。
2,多进程的Pool进程池不能和gevent同时使用,
3,多进程中初始化数据库连接不能放在init中,因该是多进程不能共享数据造成多进程程序不运行。

感想

1,使用多进程时,尽量使自己的程序是单线运行。
2,使用gevent时,放在最后的for循环最好处理。
3,gevent 放在循环的地方,循环数据至少5个才能很好看到效果。

简单示例
import time
import gevent
from gevent import monkey
monkey.patch_all()

def f1(i):
    time.sleep(5)
    return i

g_list = []
for i in range(10):
    g = gevent.spawn(f1,i)
    g_list.append(g)
items = gevent.joinall(g_list)
for item in items:
    print('返回值是:',item.value)

About

get jd mobile info

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages