标签:try tail pack 5.0 mozilla apple exception request sleep
mport threading, requests, time, re, os
"""
写个思路,把普通爬虫直接拉进来,但是全局变量不太清楚会造成什么样的影响
之前使用全局变量列表应该要分成两个,函数内部同名变量也互相不影响
但有个很大的问题,代码比较臃肿。无法将一个函数给两个线程同时使用
因为业务逻辑已经固定了,驾驶函数1和函数2同时从第一页开始爬取到的数据是没有差别的
所以我将一共五百页的东西分成1-250+和250+到500+两个循环
分别用函数1和函数2来执行
应该可以调用一个函数了,只需要定义两个列表,然后作为参数分别在调用函数的时候传入
get_pic_list()之内
"""
package_list = []
package_list2 = []
# 1.每页的url从1-531,使用for循环 拼接url
# 2.打开url之后,使用正则findall抓取该页的具体包链接 ,存入package_list
def get_pic_url(page,list):
try:
os.mkdir(str(page))
except Exception as e:
pass
head = {
‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36‘}
url = ‘http://www.doutula.com/article/list/?page={}‘.format(page)
res = requests.get(url,headers = head)
tmp = re.findall(r‘<a href="([^#].*?)" class=".*?">‘, res.text)
print(tmp)
list.extend(tmp)
# 3.使用for循环遍历package_list 作为picture_url
# 4.打开改url ,然后抓取url中的表情jpg,存入本地文件夹或者数据库
for pic_url in list:
if len(pic_url) != len(‘http://www.doutula.com/article/detail/1070805‘):
break
else:
res_pic = requests.get(pic_url,headers = head)
reg = r‘‘‘<img src="(.*?)" alt="(.*?)" .*?>‘‘‘
reg = re.compile(reg,re.S)
tmp = re.findall(reg,res_pic.text)
print(tmp)
for i in tmp:
num = tmp.index(i)
picture_res = requests.get(i[0],headers = head)
string = ‘‘
if picture_res:
tmp_str = i[1]
for each in tmp_str:
if each in (‘\\‘,‘/‘,‘*‘,‘?‘,‘"‘,‘|‘,‘>‘,‘<‘):
pass
else:
string = string + each
tmp_str = string
if tmp_str[-3:] == ‘jpg‘:
with open(r‘./{}/{}-{}{}.jpg‘.format(page,list.index(pic_url),num,tmp_str),‘wb‘) as f:
f.write(picture_res.content)
time.sleep(1)
else:
with open(r‘./{}/{}-{}{}.gif‘.format(page,list.index(pic_url),num,tmp_str),‘wb‘) as f:
f.write(picture_res.content)
time.sleep(1)
else:
break
list.clear()
def fun1():
for page in range(1,265): # 一共532
get_pic_url(page,package_list)
def fun2():
for page in range(265,532): # 一共532
get_pic_url(page,package_list2)
if __name__ == "__main__":
t1 = threading.Thread(target=fun1)
t2 = threading.Thread(target=fun2)
t1.start()
t2.start()
# 成功实现
标签:try tail pack 5.0 mozilla apple exception request sleep
原文地址:https://www.cnblogs.com/guducp/p/9029919.html