我正试图抓一个网站:
http://www.gabar.org/membersearchresults.cfm?start=26&id=E640EC74-9C8E-9913-79DB5D9C376528C0
我知道上面的链接会显示没有搜索结果,但是当我手动搜索时会有搜索结果。
我遇到的问题是,当我在浏览器中打开此链接时,我能够按预期看到一个页面,但是当我在美丽的汤中打开输出时,我得到的内容是这个搜索不可用。
我是新手,所以不太确定这是如何工作的,网站是否有内置的东西,这样的东西(urllib2 / beautifulsoup)不起作用?
File = urllib2.urlopen("http://www.gabar.org/membersearchresults.cfm?start=26&id=E640EC74-9C8E-9913-79DB5D9C376528C0")
Html = File.read()
File.close()
soup = BeautifulSoup(Html)
AllLinks = soup.find_all("a")
lawyerlinks = []
for link in soup.find_all("a"):
lawyerlinks.append(link.get('href'))
lawyerlinks = lawyerlinks[76:100]
print lawyerlinks
答案 0 :(得分:3)
那很有意思。转到first page of results工作,然后单击“下一步”工作,它所做的只是将您带到您发布的URL。但是如果我直接访问该网址,我就没有结果。
请注意urllib2.urlopen
的确与此处的浏览器完全相同。如果您直接在该页面上打开浏览器,则无法获得任何结果 - 这正是您使用urlopen
获得的结果。
您要做的是模仿浏览器,访问结果的第一页,然后像浏览器一样模仿“下一步”。我知道的最好的库是mechanize。
import mechanize
br = mechanize.Browser()
br.open("http://www.gabar.org/membersearchresults.cfm?id=ED162783-9C8E-9913-79DBE86CBE9FB115")
response1 = br.follow_link(text_regex=r"Next", nr=0)
Html = response1.read()
#rest is the same