Pythonの宿題の終わりとして、私はIT採用についてのクロールを書きました。ITの見積もりを知りたいです。誰もが一緒に話し合って話し合うことができます。ナンセンスな話をしないで、乾物を始めましょう。
まず、クロールするコンテンツを選択します。
募集のコンテンツを知りたいので、Webページをクリックし、f12をクリックしてコンテンツを表示します。
あなたが訪問したいウェブサイトがどこにあるかを見ることができます。
https://job.csdn.net/search/index?k=&t=1&f=1
https://job.csdn.net/search/index?k=&t=1&f=2
ウェブページのさまざまなポイントを確認し、ウェブページめくりのルールを分析
し、ループを設定し、ページめくりを実現し、
page = 1 # 设置条件
while page<=10:#设置循环条件,经行翻页
url=f'https://job.csdn.net/search/index?k=&t=1&f={page}'
このようにして、Webページの次のページへのキーがfにあることがわかります。ネットワーク内のサーバーのヘッドを見てみましょう。
シミュレーションヘッドは、クロール防止メカニズムを防止するためのものであり、Pythonヘッドをクロールすることを許可しません。
headers= {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47"
}#模拟的服务器头
次に、モジュールをインポートしてWebコンテンツをクロールします
import requests
from bs4 import BeautifulSoup#导入模块
response = requests.get(url,headers=headers)#换包头
newurl = response.text#获取网页内容
次に、
再帰的に上向きに検索して、必要なコンテンツを探します(青色でマークされた矢印をポイントし、Webページをクリックすると、必要なコンテンツを表示できます)。
必要なコンテンツが出てきます。cssセレクターを作成し、タグを検索して、必要なコンテンツを選択します。
次に、ファイルを保存すると、小さなプロジェクトが完了します。
with open(file= 'e:/练习.txt ',mode= 'a+') as f :#e:/练习.txt 为我电脑新建的文件,a+为给内容进行添加,但不进行覆盖原内容。
以下は、誰もが望んでいる完全なコードです。
'''
作者:ls富
时间:2020/12/1
构建对象
构建方法
方法
换头
请求数据
对数据进行筛选
写入文件夹
'''
import requests
from bs4 import BeautifulSoup#导入模块
class Position():
def __init__(self,position_name,position_require):#构建对象属性
self.position_name=position_name
self.position_require=position_require
def __str__(self):
return '%s%s/n'%(self.position_name,self.position_require)#重载方法将输入变量改成字符串形式
class Xiang():
def harder(self,url):
headers= {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47"
}#模拟的服务器头
response = requests.get(url,headers=headers)#换包头
newurl = response.text#获取网页内容
soup=BeautifulSoup(newurl,'html.parser') # BeautifulSoup打看网页
soupl = soup.select(".common_r_con")#进行选择页面第一次内容
results=[]#创建一个列表用来存储数据
for e in soupl:
biao=e.select('.position_list.clearfix')#进行二次筛选
for h in biao:
p=Position(h.select_one('.employ_pos_name').get_text(strip=True),h.select_one('.position_require').get_text(strip=True))#调用类转换(继续三次筛选选择自己需要内容)
results.append(p)
return results#返回内容
if __name__ == '__main__':
a=Xiang()#构建对象
url = f'https://job.csdn.net/search/index?k=&t=1&f=1'
a.harder(url)
import time
with open(file= 'e:/练习.txt ',mode= 'a+') as f :#e:/练习.txt 为我电脑新建的文件,a+为给内容进行添加,但不进行覆盖原内容。
page = 1 # 设置条件
while page<=10:#设置循环条件,经行翻页
url=f'https://job.csdn.net/search/index?k=&t=1&f={page}'
for item in a.harder(url):
line=f'{item.position_name}\t{item.position_require}\n'
f.write(line) # 采用方法
print("下载完成")
page += 1
効果