【问题标题】:Multiple inputs and after if statement多个输入和 if 语句之后
【发布时间】:2021-11-16 05:05:27
【问题描述】:

我正在尝试为作业构建网络抓取工具。 现在,我正在尝试添加一个将由 if 语句检查的多输入。

这是代码:

html_text = requests.get('https://www.timesjobs.com/candidate/job-search.html?searchType=personalizedSearch&from=submit&txtKeywords=python&txtLocation=').text

soup = BeautifulSoup(html_text , 'lxml')
print ('Write Your Skill That you are less familiar with')
unfamiliar_skill = input (">")
print (f'Filtering out {unfamiliar_skill}')

def find_jobs():
    jobs = soup.find_all('li', class_ = "clearfix job-bx wht-shd-bx")
    for job in jobs:
        published_date = job.find('span', class_ = "sim-posted").span.text
        if "few" in published_date:
            company_name = job.find('h3', class_ = "joblist-comp-name").text.replace(' ','')
            require_experiance = job.find('ul', class_ = "top-jd-dtl clearfix").li.text.replace("card_travel", '')
            skills_requirment = job.find('span', class_="srp-skills").text.replace(' ','')
            location_of_the_job = job.find('ul', class_ = "top-jd-dtl clearfix").span.text
            for_more_info = job.find('header', class_ = "clearfix").h2.a["href"]
            #for_more_info = job.header.h2.a["href"]
            have_unfamiliar_skill = False
            for skill in unfamiliar_skill:
                if skill not in skills_requirment:
                    have_unfamiliar_skill = True
            break

            if not have_unfamiliar_skill:
                print("necessary information")

                print(f"Company Name: {company_name.strip()}") 
                print(f"Require Experiance: {require_experiance.strip()}")
                print(f"Skill Requirment: {skills_requirment.strip()}")
                print(f"Location Of The Job: {location_of_the_job.strip()}")
                print(f"For More Info: {for_more_info}")
                print('') 

这是输出:

Write Your Skill That you are less familiar with
>linux,sql
Filtering out linux,sql

希望有人能帮助我。

谢谢

【问题讨论】:

  • 请为您的输入添加一些示例和skills_requirment
  • 当您在 in 匹配 list 中的 string 时出现错误。检查skills_requirment 的类型。将其转换为列表以使其为您工作。
  • @Amin ,当然,例如:Django,Linux,web scraping...
  • @aberry,我将 Skill_requirment 更改为列表: ''))``` 但是现在的问题是它的输出看起来像一个列表: Skill Requirment: ['\n', 'p', 'y', 't', 'h', 'o' ,'n',',','w','e','b','t','e','c','h','n','o','l',' o'、'g'、'i'、'e'、's'、','、'l'、'i'、'n'、'u'、'x'、','、'm' , 'o', 'b', 'i', 'l', 'e', ',', 'm', 'y', 's', 'q', 'l', ',', ' a','n','g','u','l','a','r','j','s',',','j','a','v' , 'a', 's', 'c', 'r', 'i', 'p', 't', '\r', '\n', '\r', '\n'] 如何我现在可以解决吗?
  • 你能分享一下你在行`skills_requirment = job.find('span', class_="srp-skills").text.replace(' ','')`中得到的skills_requirment输出吗.似乎它已经是单个字符串,因此 list 为您提供字符列表。

标签: python list if-statement web-scraping input


【解决方案1】:

您正在尝试检查列表中的列表。但是 in 运算符不能那样工作。

您可以检查每个元素,然后打印必要的信息。

have_unfamiliar_skill = False
for skill in unfamiliar_skill:
    if skill not in skills_requirment:
        have_unfamiliar_skill = True
        break

if not have_unfamiliar_skill:
    print("necessary information")

【讨论】:

  • 首先,感谢您的回答,但我不确定我是否理解它。我希望我将为“unfamiliar_skill”提供输入(可以是一个选项,甚至两个)
  • 如果 unfamilliar_skill 是一个列表,我看到你用逗号分隔,你必须一个一个地检查每个元素。例如skills_req = ['python','sql'], unfamiliar_skills=['sql','c++','pascal']。您无法通过 unfamiliar_skill 进行检查,而不是在 Skills_requirment 中,因为 in 运算符的 2 面是列表。
  • 谢谢你的解释,我现在明白你的意思了。虽然,我在代码上实现它时遇到了一些问题,但有可能你可以帮助我吗?
  • 我认为你可以在这里发布错误。
  • 我尝试将 - unfamilliar_skill 和 Skill_reqiurement 都转换为 str 并且我没有收到任何错误,但过滤器无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
相关资源
最近更新 更多