python - 如何使用请求从网站上抓取不同职位的标题?

标签 python python-3.x web-scraping beautifulsoup python-requests

我正在尝试使用 requests 模块在 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=&region="})
    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=&region="  
}

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)

How can I fetch the title of different jobs using requests?



PS 浏览器模拟器不是执行该任务的选项。

最佳答案

我想看看你的胡言乱语是什么样的。当我运行你的代码时,我得到了一堆希伯来语字符(不足为奇,因为网站是希伯来语)和职位:

לחברת הייטק מובילה, IT project manager דרושים AllStars-IT Group (MT) אלעד מערכות מגייסת מפתח /ת JAVA לגוף רפואי גדול היושב בתל אביב! דרושים אלעד מערכות מנתח /ת מערכות ומאפיין /ת דרושים מרטנס הופמן שירותי מחשוב אנשי /נשות תפעול ותמיכה טכנית למוצר אינטרנטי דרושים המימד השלישי DBA SQL /ORACLE דרושים CPS Jobs דרושים /ות אנשי /נשות תמיכה על מערכת פריוריטי, שכר מתגמל למתאימים /ות דרושים חבר הון אנושי מפתח /ת SAP ABAP דרושים טאואר סמיקונדקטור דרוש /ה Director of Data analytics דרושים אופיסופט Fullstack Developer דרושים SQLink מפתח /ת תשתיות דאטה ותומך תשתית BI דרושים המימד השביעי בע"מ מפתח /ת תשתיות דאטה ותומך /ת תשתית BI דרושים יוניטסק לארגון בעל משמעות גבוהה דרוש /ה תוכניתן /ית ABAP דרושים יוניטסק לחברת טלדור דרוש /ה ארכיטקט /ית למערכת פיקוד ובקרה עבור ארגון גדול בתל אביב דרושים טלדור Taldor מערכות מחשבים דרוש /ה מפתח /ת אינטגרציה דרושים SQLink דרוש /ה ראש צוות Full stack מתכנת /ת Senior Software Engineer Manager Senior Software Engineer Senior Embedded Software Engineer Embedded Software Engineer Senior Software Engineer Subsidiary PMM Manager תוכניתן /ית BackEnd Full Stack /Frontend Software Engineer Software Validation Engineer Principal Product Manager Quantum Algorithms Research intern Principal/Senior Detection Team Lead Support Engineer Software Engineer



您的问题是要过滤掉希伯来语字符吗?因为那只需要简单的正则表达式!导入 re 包,然后将您的 print 语句替换为:
print(re.sub('[^A-z0-9]+',' ',item.text))

希望这可以帮助!

关于python - 如何使用请求从网站上抓取不同职位的标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60486625/

相关文章:

python - Web抓取中的多级标记存在检查-提高python的可读性

python - 我正在寻找 python 中 FDIST 的等效函数

python - 使用来自不同目录的 Flask 提供单个 index.html

python - 通过网络发送加密消息时的 Cryptography.fernet.InvalidToken

检查数据类字段是否具有默认值的 Pythonic 方法

python - 使用 Python 针对 AJAX 请求抓取 booking.com

python - 抓取错误 : Spider not Found

python - 属性错误: module 'tensorflow' has no attribute 'app' : error

Python 运算符覆盖 : __ge__ result is not as expected

python - 使用 Python 在目录中监视文件,然后使用 POST 请求发送文件修改数据