我需要为https://hasjob.co/整理一些信息,我可以通过进入登录页面来抓取某些信息并像往常一样抓取,但是大多数信息仅当您向下滚动到底部时才由Javascript生成页面的。
任何使用python的解决方案?
import mechanize
import cookielib
from bs4 import BeautifulSoup
import html2text
import pprint
job = []
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Chrome')]
# The site we will navigate into, handling it's session
br.open('https://auth.hasgeek.com/login')
# View available forms
##for f in br.forms():
## print f
# Select the second (index one) form (the first form is a search query box)
br.select_form(nr=1)
# User credentials
br.form['username'] = 'username'
br.form['password'] = 'pass'
br.submit()
##print(br.open('https://hasjob.co/').read())
r = br.open('https://hasjob.co/')
soup = BeautifulSoup(r)
for tag in soup.find_all('span',attrs={'class':'annotation bottom-right'}):
p = tag.text
job.append(p)
pp = pprint.PrettyPrinter(depth=6)
pp.pprint(job)
由于某种原因,几乎没有人注意到Hasjob具有Atom提要,并且它是从主页链接的。使用feedparser库从Hasjob读取结构化数据非常简单:
import feedparser
feed = feedparser.parse('https://hasjob.co/feed')
for job in feed.entries:
print job.title, job.link, job.published, job.content
订阅源过去已经满了30天,但是现在已经有800多个条目,并且服务器上还有相当大的负载,因此我将其减少到工作的最后24小时。如果您需要常规的工作帮助,则每天至少要从此URL加载一次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句