我正在尝试使用请求模块在python中创建脚本,以从网站抓取不同职位的标题。要解析不同职位的标题,我需要首先从该站点获得相关响应,以便我可以使用BeautifulSoup处理内容。但是,当我运行以下脚本时,我可以看到该脚本生成了 gibberish ,这些字面上不包含我要查找的标题。
website link(In case you don't see any data, make sure to refresh the page
)
我尝试过:
import requests
from bs4 import BeautifulSoup
link = 'https://www.alljobs.co.il/SearchResultsGuest.aspx?'
query_string = {
'page': '1',
'position': '235',
'type': '',
'city': '',
'region': ''
}
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'
s.headers.update({"Referer":"https://www.alljobs.co.il/SearchResultsGuest.aspx?page=2&position=235&type=&city=®ion="})
res = s.get(link,params=query_string)
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select(".job-content-top [class^='job-content-top-title'] a[title]"):
print(item.text)
我什至尝试这样:
import urllib.request
from bs4 import BeautifulSoup
from urllib.parse import urlencode
link = 'https://www.alljobs.co.il/SearchResultsGuest.aspx?'
query_string = {
'page': '1',
'position': '235',
'type': '',
'city': '',
'region': ''
}
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36",
"Referer":"https://www.alljobs.co.il/SearchResultsGuest.aspx?page=2&position=235&type=&city=®ion="
}
def get_content(url,params):
req = urllib.request.Request(f"{url}{params}",headers=headers)
res = urllib.request.urlopen(req).read()
soup = BeautifulSoup(res,"lxml")
for item in soup.select(".job-content-top [class^='job-content-top-title'] a[title]"):
yield item.text
if __name__ == '__main__':
params = urlencode(query_string)
for item in get_content(link,params):
print(item)
如何使用请求获取不同职位的标题?
PS Browser模拟器不是执行此任务的选项。
最佳答案
我想看看你的胡言乱语。当我运行您的代码时,我得到了一堆希伯来语字符(毫不奇怪,因为该网站是希伯来语)和职称:
IT项目经理לחברתהייטקמובילה
םAllStars-IT集团
(MT)/עדJAVAלגוגרפואיגדולהיושבבתלאביב!
דרושיםאלעדמערכות
נתח/תמערכותומאפיין/ת
דרושיםמרטנסהופמןשירותימחשוב
אנשי/נשותתפעולותמיכהטכניתלמוצראינטרנטי
דרושיםהמימדהשלישי
DBA SQL / ORACLE
םרושיםCPS职位
דרושים/ותאנשי/נשותתמיכהעלמערכתפריוריטי,שכרמתגמללמתאימים/ות
דרושיםחברהוןאנושי
פתח/תSAP ABAP
דרושיםטאוארסמיקונדקטור
数据分析总监
םרושיםאופיסופט
全栈开发人员
םSQLink
פתח/תתיותדאטהותומךתשתיתBI
שרושיםהמימדהשביעיבע"מ
פתח/תתיותדאטהותומך/תתשתיתBI
םרושיםיוניטסק
阿拉伯联合酋长国/阿拉伯联合酋长国/阿拉伯联合酋长国
םרושיםיוניטסק
/ / / / / / / / / / / / / / / / ///////////////
塔尔多(Taldor)的照片
שרוש/המפתח/תאינטגרציה
םSQLink
שרוש/הררשצוות全栈
תכנת/ת
高级软件工程师经理
高级软件工程师
资深嵌入式软件工程师
嵌入式软件工程师
高级软件工程师
子公司PMM经理
תןוכניתן/ית后端
全栈/前端软件工程师
软件验证工程师
首席产品经理
量子算法研究实习生
校长/高级检测组组长
支援工程师
软件工程师
您要过滤希伯来字符的问题吗?因为那只需要简单的正则表达式!导入re软件包,然后用以下代码替换您的打印语句:
print(re.sub('[^A-z0-9]+',' ',item.text))
希望这可以帮助!
关于python - 如何使用请求从网站上抓取不同职位的标题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60486625/