2016-02-17 2 views
1

я получаю совершенно иное содержание, чем просмотр источника на странице показывает:запросов модуль получает различное содержание, чем на странице

import requests 
from bs4 import BeautifulSoup 

URL = "http://www.indeed.com/jobs?q=python&start=740" 

r = requests.get(URL) 
content = r.content 
soup = BeautifulSoup(content) 

"Apply with" in content 

for span in spans: 
    try: 
     if "Apply" in span.string: 
      print(span.string) 
    except: 
     pass 

Там нет «Применить» в пролетах, и нет «Наносить» на странице. Единственный способ, которым я могу определить, что я хочу это «Наносить» часть

enter image description here

enter image description here Как сделать запросы модуль возвращает тот же HTML я получаю, когда я захожу на страницу? Спасибо

ответ

1

Прежде всего, вы не можете ожидать requests принести вам точно такую ​​же страницу, как вы видите в инструментах разработчика браузера поскольку requests бы только получить начальный HTML страницы без выполнения каких-либо JavaScript, без внесения каких-либо дополнительных запросов, необходимых для загрузки страницы - другими словами, requests не является браузером.

Об этом конкретном случае, я на самом деле вижу «Легко применять» вместо «Применить с вашим резюме». Похоже, что вы вошли в «Действительно» в браузере.

И я вижу это «легко применить» элементы в обоих requests ответа и в браузере:

>>> import requests 
>>> from bs4 import BeautifulSoup 
>>> 
>>> URL = "http://www.indeed.com/jobs?q=python&start=740" 
>>> 
>>> r = requests.get(URL, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36"}) 
>>> content = r.text 
>>> soup = BeautifulSoup(content, "html.parser") 
>>> 
>>> for span in soup.find_all("span", class_="iaLabel"): 
...  print(span.text) 
... 
Easily apply 
Easily apply 
Easily apply 
Easily apply 
Easily apply 

Если вы хотите, чтобы быть как можно ближе к браузеру, как это возможно в вашей автоматизации, а затем, ну, используйте настоящий браузер - вы можете управлять настоящими браузерами, такими как Firefox или Chrome, или без головы PhantomJS, через selenium.

+0

это может быть правдой, но для этой конкретной страницы единственной ссылкой является та, которая говорит «Применить с вашим действительно резюме», – codyc4321

Смежные вопросы