Python爬蟲——4.4爬蟲案例——requests和xpath爬取招聘網站資訊
阿新 • • 發佈:2019-01-05
# -*-coding:utf-8 -*- ''' 使用requests模組進行資料採集,XPath進行資料篩選''' import requests from lxml import etree # 定義訪問路由 url='http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC%2B%E4%B8%8A%E6%B5%B7%2B%E5%B9%BF%E5%B7%9E%2B%E6%B7%B1%E5%9C%B3&sm=0' # 請輸入要爬取多少頁 nums=input('請輸入要爬取多少頁:') f=open('zl.txt','w') for num in range(1,nums+1): get_params={ 'p':num } # 定義請求頭 headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } # 傳送請求 response=requests.get(url,params=get_params,headers=headers) #將得到的資料轉換為需要的html物件 html=etree.HTML(response.text) # 1.爬取職位名稱 # 使用xpath進行匹配 list1=html.xpath("//table[@class='newlist']/tr[1]/td[@class='zwmc']/div") # 定義匹配公司職位列表 job_names=[] for l in list1: name= l.xpath('string(.)').strip() # 將爬取的職位名稱加入列表 job_names.append(name) print("第%s頁職位名稱爬取完畢"%num) # 2.爬取月薪資料 # 使用xpath進行匹配 list2=html.xpath("//table[@class='newlist']/tr[1]/td[@class='zwyx']") # 定義匹配公司職位列表 month_names = [] for l in list2: name = l.xpath('string(.)').strip() # 將爬取的職位名稱加入列表 month_names.append(name) print("第%s頁月薪資料稱爬取完畢" % num) # 3.爬取公司名稱 list3=html.xpath("//table[@class='newlist']/tr[1]/td[@class='gsmc']/a[1]") #list3 = html.xpath("//div[@class='newlist_main']/form/div/div/div[@id='newlist_list_div']/div/table[@class='newlist']/tr/td") # 定義匹配公司職位列表 company_names = [] for l in list3: name = l.xpath('string(.)').strip() # 將爬取的職位名稱加入列表 company_names.append(name) print("第%s頁公司名稱爬取完畢" % num) for i in range(0,len(company_names)): info=job_names[i]+"|"+month_names[i]+"|"+company_names[i]+"\r\n" f.write(info.encode('utf-8')) print("第%s頁職位資訊爬取完畢" % num) f.write("第%s頁職位資訊爬取完畢"% num+"\r\n") f.write("#"*80+"\r\n") f.close() print("全部職位資訊爬取完畢")