我试图通过尝试一些简单的在线教程来废弃一个日本网站,但我无法从网站上获得信息。下面是我的代码:
import requests
wiki = "https://www.athome.co.jp/chintai/1001303243/?DOWN=2&BKLISTID=002LPC&sref=list_simple&bi=tatemono"
page = requests.get(wiki)
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.text, 'lxml')
for i in soup.findAll('data payments'):
print(i.text)
我想从以下部分得到:
<dl class="data payments">
<dt>賃料:</dt>
<dd><span class="num">7.3万円</span></dd>
</dl>
我想打印我们的付款数据,价格是“7.3円”。你知道吗
应输入(字符串中):
“付款方式:7.3”
编辑时间:
import requests
wiki = "https://www.athome.co.jp/"
headers = requests.utils.default_headers()
headers.update({
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
})
page = requests.get(wiki,headers=headers)
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'lxml')
print(soup.decode('utf-8', 'replace'))
您遇到的问题是,由于该站点将您的请求标识为来自bot,因此该站点正在阻止您的请求。你知道吗
通常的技巧是附加浏览器在请求中发送的相同头(包括cookies)。如果您转到
Inspect > Network > Request > Copy > Copy as Curl
,您可以看到Chrome正在发送的所有头文件。你知道吗运行脚本时,将得到以下结果:
在最新版本的代码中,对soup进行解码后,将无法在BeautifulSoup中使用
find
和find_all
等函数。但我们稍后再谈。你知道吗首先
拿到汤后,你可以打印汤,你会看到:(只显示关键部分)
这意味着你没有获得足够的元素,你被检测为一个爬虫。你知道吗
因此,@KunduK的答案中缺少了一些东西,与
find
函数没有任何关系。你知道吗主要部分
首先,您需要使python脚本不那么像爬虫程序。你知道吗
标题
收割台通常用于检测cralwer。 在原始请求中,当您从请求中获取会话时,可以通过以下方式检查标头:
您可以看到,这里的头将告诉服务器您是一个爬虫程序,即
python-requests/2.22.0
。你知道吗因此,您需要通过更新头来修改
User-Agent
。你知道吗但是,在测试cralwer时,它仍然被检测为crawerl。因此,我们需要在标题部分进一步挖掘。(但可能是其他原因,如IP阻止程序或Cookie原因。我稍后再提。)
在Chrome中,我们打开开发者工具,并打开网站。(假装这是你第一次访问网站,你最好先clear the cookies)清除cookies后,刷新页面。我们可以在开发者工具的网卡上看到,它显示了很多来自Chrome的请求。
通过输入第一个属性
https://www.athome.co.jp/
,我们可以在右侧看到一个详细的表,其中请求头是Chrome生成的头,用于请求目标站点的服务器。为了确保每件事都能正常工作,你可以把这个Chrome标题中的每件事都添加到你的crawler中,它就不能再发现你是真正的Chrome或crawler了。(对于大多数站点,但我也发现一些站点使用starnge设置,要求在每个请求中都有一个特殊的头)
我已经挖掘出,在添加
accept-language
之后,网站的反cralwer功能会让你通过。你知道吗因此,总的来说,你需要像这样更新你的头。你知道吗
曲奇
对于cookie的解释,您可以参考wiki。 要得到饼干,有一个简单的方法。 首先,初始化一个会话并更新头,如我上面提到的。 第二,请求获取页面https://www.athome.co.jp,一旦获取页面,您将获得服务器发布的cookie。你知道吗
优势请求.会话会话将帮助您维护cookie,因此您的下一个请求将自动使用此cookie。你知道吗
您只需使用以下方法检查获得的cookie:
我的结果是:
您不需要解析这个页面,因为您只需要cookie而不是内容。你知道吗
获取内容
您可以使用获得的会话来请求您提到的wiki page。你知道吗
现在,你想要的一切都会被服务器发送给你,你可以用BeautifulSoup解析它们。你知道吗
在获得想要的内容之后,可以使用BeautifulSoup来获取目标元素。你知道吗
你会得到:
你可以从中提取你想要的信息。你知道吗
将其格式化为一行。你知道吗
一切都已完成。
摘要
我将粘贴下面的代码。你知道吗
在爬虫领域,还有很长的路要走。你知道吗
你最好上网,充分利用浏览器中的开发工具。你知道吗
您可能需要找出内容是由JavaScript加载的,还是在iframe中加载的。你知道吗
更重要的是,你可能会被发现是一个爬虫和超链接已被服务器锁定。反爬虫技术只能通过更频繁的编码来实现。你知道吗
我建议你从一个没有反爬虫功能的更简单的网站开始。你知道吗
试试下面的代码使用用标记查找元素的类名。你知道吗
输出:
如果你想操纵你的期望输出。试试看那个。你知道吗
输出:
相关问题 更多 >
编程相关推荐