当我测试它时,它会一直打印出来(无,0),即使我使用的网址有几个< a href =
<div id="subscription_purchase" style="display:none;">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="a3" id="hiddentotal2" value="5.00">
......
<input type="submit" name="submit" value="PURCHASE SUB" />
</div>
<div id="normal_purchase" style="display:none;">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="amount" id="hiddentotal2" value="1">
......
<input type="submit" name="submit" value="PURCHASE NORM" />
</div>
答案 0 :(得分:4)
你应该使用美丽的汤,而不是满足你的要求,它的工作非常顺利。我将在下面举一个例子:
from bs4 import BeautifulSoup
import requests
def links(url):
html = requests.get(url).content
bsObj = BeautifulSoup(html, 'lxml')
links = bsObj.findAll('a')
finalLinks = set()
for link in links:
finalLinks.add(link.attrs['href'])
答案 1 :(得分:1)
试试这个
import urllib.request
导入重新
#pass any url url = “Want to get all links in a webpage using urllib.request”
urllist = re.findall(r“”“&lt; \ s * a \ s * href = [”']([^ =] +)[“']”“”, urllib.request.urlopen(URL).read()。解码( “UTF-8”))
打印(urllist)
答案 2 :(得分:0)
这是另一种解决方案:
from urllib.request import urlopen
url = ''
html = str(urlopen(url).read())
for i in range(len(html) - 3):
if html[i] == '<' and html[i+1] == 'a' and html[i+2] == ' ':
pos = html[i:].find('</a>')
print(html[i: i+pos+4])
定义您的网址。 希望这有帮助,不要忘记投票和接受。
答案 3 :(得分:0)
这些解决方案之一怎么样?
import requests
from bs4 import BeautifulSoup
research_later = "giraffe"
goog_search = "https://www.google.co.uk/search?sclient=psy-ab&client=ubuntu&hs=k5b&channel=fs&biw=1366&bih=648&noj=1&q=" + research_later
r = requests.get(goog_search)
print r
soup = BeautifulSoup(r.text, "html.parser")
print soup
import requests
from bs4 import BeautifulSoup
r = requests.get("http://www.flashscore.com/soccer/netherlands/eredivisie/results/")
soup = BeautifulSoup(r.content)
htmltext = soup.prettify()
print htmltext
import sys,requests,csv,io
from bs4 import BeautifulSoup
from urllib.parse import urljoin
url = "http://www.cricbuzz.com/cricket-stats/icc-rankings/batsmen-rankings"
r = requests.get(url)
r.content
soup = BeautifulSoup(r.content, "html.parser")
maindiv = soup.find_all("div", {"class": "text-center"})
for div in maindiv:
print(div.text)
答案 4 :(得分:0)
有时BeautifulSoup和请求不是您要使用的。
在某些情况下,使用请求库时,相关网站可能会阻止您进行抓取(获取响应403)。因此,您必须改用urllib.request。
在这里,您可以使用urllib.request获取要抓取的网页上列出的所有链接(href)。
import urllib.request
from urllib.request import urlretrieve, Request, urlopen
import re
# get full html code from a website
response = Request('https://www.your_url.com', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(response)
print(webpage.read())
# create a list of all links/href tags
url = 'https://www.your_url.com'
urllist = re.findall("href=[\"\'](.*?)[\"\']", urllib.request.urlopen(url).read().decode("utf-8"))
print(urllist)
# print each link on a seperate line
for elem in urllist:
print(elem)
在代码中,我们将str.decode(x)与选定的纯文本编码x一起使用,以将HTML对象转换为纯文本字符串。标准编码为utf-8。如果您要抓取的网站使用不同的编码,则可能需要更改编码。
我们在正则表达式的帮助下找到链接:在纯文本字符串上使用正则表达式模式href = \“ \'[\” \']调用re.findall(pattern,string)以匹配所有href标记,但仅提取引号后的网址文本,以返回href标记内包含的链接列表。
答案 5 :(得分:0)
尝试使用request-html来尝试解析HTML,然后我们可以搜索HTML中的任何标签,clad或ID
from requests_html import HTMLSession
session = HTMLSession()
r = session.get(url)
r.html.links
如果您要使用绝对链接
r.html.absolute_links