python爬虫---多线程爬取腾讯招聘信息【简单版】
2020-01-12 17:17
567 查看
多线程快速爬取腾讯招聘数据
import time from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import os import threading def save_to_html(html_str,filename): dirname = os.path.dirname(filename) if not os.path.exists(dirname): os.mkdir(dirname) with open(filename,'w',encoding='utf-8') as fp: fp.write(html_str) print('下载完成!',filename) def get_content_by_selenium(url): driver = webdriver.PhantomJS() wait = WebDriverWait(driver,20) #请求 driver.get(url) #等待 wait.until(EC.presence_of_all_elements_located((By.XPATH,'//div[@class="recruit-list"]'))) #获取页面内容 html_str = driver.page_source return html_str def download(i): base_url = 'https://careers.tencent.com/search.html?index=%s' html_str = get_content_by_selenium(base_url %i) save_to_html(html_str,'./tencent/{}.html'.format(i)) if __name__ == '__main__': start = time.time() #用第一种创建线程来开启多线程 crawl_list = [] for i in range(1, 20): # download(i) #用这种方法开启线程,弊端很大 #任务数就是线程数,这样如果任务比较大,容易造成崩溃。 #任务无法按照顺序来执行 t = threading.Thread(target=download,args=(i,)) t.start() crawl_list.append(t) #阻塞主线程,我们join方法 for t in crawl_list: t.join()#阻塞当前线程,指导t线程运行结束 print(time.time()-start)#21.61223602294922
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- python爬虫小项目--抓取腾讯招聘岗位信息
- python爬虫(8)——Xpath的应用实例:爬取腾讯招聘信息
- python爬虫---多线程爬取腾讯招聘数据【晋级版】
- python爬虫3——爬取腾讯招聘全部招聘信息
- Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息
- 【python爬虫】通过python多线程的抓取新浪新闻的标题时间评论信息
- Python爬虫框架Scrapy实战之定向批量获取职位招聘信息
- python-腾讯,优酷,爱奇艺,土豆,等网站视频信息查询api接口爬虫
- Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息
- python爬虫抓取豆瓣所有恐怖片信息(利用多线程和构建免费ip代理池)
- python 多线程爬虫实例(爬取智联招聘信息)
- Python爬虫框架Scrapy实战之定向批量获取职位招聘信息
- python项目实战:用多进程(multiprocessing)+多线程(threading)的方式并发爬取智联招聘爬虫岗位信息并存入MongoDB
- [python爬虫] 招聘信息定时系统 (一).BeautifulSoup爬取信息并存储MySQL
- python爬虫--scrapy爬取腾讯招聘网站
- Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息
- Python爬虫框架Scrapy实战之批量抓取招聘信息
- Python爬虫框架scrapy批量获取腾讯招聘网上面的信息
- Python爬虫框架Scrapy实战之批量抓取招聘信息
- Python爬虫 抓取大数据岗位招聘信息(51job为例)