网页抓取时如何搜索特定的unicode字符串?
How to search for a specific unicode string when web scraping?
我最近对 Python 上的网络抓取很感兴趣,并在一些简单的例子上做了,但我不知道如何处理不遵循 ASCII 代码的其他语言。例如,在 HTML 文件中搜索特定字符串或使用这些字符串写入文件。
from urllib.parse import urljoin
import requests
import bs4
website = 'http://book.iranseda.ir'
book_url = 'http://book.iranseda.ir/DetailsAlbum/?VALID=TRUE&g=209103'
soup1 = bs4.BeautifulSoup(requests.get(book_url).text, 'lxml')
match1 = soup1.find_all('a', class_='download-mp3')
for m in match1:
m = m['href'].replace('q=10', 'q=9')
url = urljoin(website, m)
print(url)
print()
查看book_url
下的这个网站,每一行都有不同的文字,但文字是波斯语。
假设我需要考虑最后一行。
文本是“صداو
如何在 <li>
、<div>
和 <a>
标签中搜索此字符串?
您需要将编码从 requests
设置为 UTF-8。看起来 requests
模块没有使用您想要的解码。如 this SO post 中所述,您可以告诉请求期望的编码。
from urllib.parse import urljoin
import requests
import bs4
website = 'http://book.iranseda.ir'
book_url = 'http://book.iranseda.ir/DetailsAlbum/?VALID=TRUE&g=209103'
req = requests.get(book_url)
req.encoding = 'UTF-8'
soup1 = bs4.BeautifulSoup(req.text, 'lxml')
match1 = soup1.find_all('a', class_='download-mp3')
for m in match1:
m = m['href'].replace('q=10', 'q=9')
url = urljoin(website, m)
print(url)
print()
这里唯一的变化是
req = requests.get(book_url)
req.encoding = 'UTF-8'
soup1 = bs4.BeautifulSoup(req.text, 'lxml')
我最近对 Python 上的网络抓取很感兴趣,并在一些简单的例子上做了,但我不知道如何处理不遵循 ASCII 代码的其他语言。例如,在 HTML 文件中搜索特定字符串或使用这些字符串写入文件。
from urllib.parse import urljoin
import requests
import bs4
website = 'http://book.iranseda.ir'
book_url = 'http://book.iranseda.ir/DetailsAlbum/?VALID=TRUE&g=209103'
soup1 = bs4.BeautifulSoup(requests.get(book_url).text, 'lxml')
match1 = soup1.find_all('a', class_='download-mp3')
for m in match1:
m = m['href'].replace('q=10', 'q=9')
url = urljoin(website, m)
print(url)
print()
查看book_url
下的这个网站,每一行都有不同的文字,但文字是波斯语。
假设我需要考虑最后一行。
文本是“صداو
如何在 <li>
、<div>
和 <a>
标签中搜索此字符串?
您需要将编码从 requests
设置为 UTF-8。看起来 requests
模块没有使用您想要的解码。如 this SO post 中所述,您可以告诉请求期望的编码。
from urllib.parse import urljoin
import requests
import bs4
website = 'http://book.iranseda.ir'
book_url = 'http://book.iranseda.ir/DetailsAlbum/?VALID=TRUE&g=209103'
req = requests.get(book_url)
req.encoding = 'UTF-8'
soup1 = bs4.BeautifulSoup(req.text, 'lxml')
match1 = soup1.find_all('a', class_='download-mp3')
for m in match1:
m = m['href'].replace('q=10', 'q=9')
url = urljoin(website, m)
print(url)
print()
这里唯一的变化是
req = requests.get(book_url)
req.encoding = 'UTF-8'
soup1 = bs4.BeautifulSoup(req.text, 'lxml')