我正在用cheerio 和meteor 刮一个社交网络。我可以登录,搜索一些信息并在页面上抓取我想要的信息。我正在发出请求并将 html 传递给cheerio,就像用 Meteor.js抓取一样。
问题是,只有当我通过网络浏览器加载页面时,才会出现页面的一部分:
在浏览器中:
<div A>
<div B>
<ul (...)>
<li (...)>...</li>
...
<li (...)>...</li>
</ul>
</div> <-- end B -->
<script id="NAME_1" type="fs/embed+m"></script>
<script type="text/javascript">fs.dupeXHR("NAME_1","NAME_2",{"renderControl":"custom","templateId":"NAME_1"});</script>
</div> <-- end A -->
Run Code Online (Sandbox Code Playgroud)
在 console.log(cherio.load(html)) 中:
<div A>
<script id="NAME_1" type="fs/embed+m"></script>
<script type="text/javascript">fs.dupeXHR("NAME_1","NAME_2",{"renderControl":"custom","templateId":"NAME_1"});</script>
</div> <-- end A -->
Run Code Online (Sandbox Code Playgroud)
我假设 html 是由cheerio 加载的,而不执行脚本。我对吗?如果是这样,有什么方法可以让cheerio 执行脚本,这样我就可以在放置内容后抓取页面?
我正在使用以下选项发出 http 请求来模拟浏览器请求,所以我认为这不是请求本身的问题(无头浏览器不会让它变得更好)。
Options = function (cookie) {
this.headers = {
"Accept": "*/*",
"Connection": "keep-alive",
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) …Run Code Online (Sandbox Code Playgroud) 我有一个包含 1000 个关键字的列表A1:A1000。我想在每个关键字的相应单元格中获取第一页的 Google 搜索结果片段。例如:A1单元格的搜索结果片段应该在B1......*1等等。任何帮助深表感谢。
我正在使用python和Beautiful Soup从网上抓取足球运动员统计数据.我将从多个来源进行搜索,每个源都会有各种各样的变量,包括字符串,整数和布尔值.例如球员姓名,职位选秀,职业选秀权(y/n).
最后,我想将这些数据放入数据挖掘工具或分析工具中,以便找到趋势.这需要是可搜索的,当我从不同顺序的新来源中搜索时,我需要能够将数据添加到玩家的信息中.
我应该使用哪些技术来存储数据,这样我才能最好地添加它并在以后进行分析?
我是网络爬虫的新手,我想获取页面的html。但是当我运行程序时,我得到的html为空,控制台显示了javascript
from bs4 import BeautifulSoup
import requests
import urllib
url = "https://linkedin.com/company/1005"
r = requests.get(url)
html_content = r.text
soup = BeautifulSoup(html_content,'html.parser')
print (soup.prettify())
Run Code Online (Sandbox Code Playgroud)
我用python编写了一个刮板。不幸的是,当刮板遇到404或505页面时,它将停止工作。如何避免循环中的那些页面以避免此问题?
这是我的代码:
import requests
from bs4 import BeautifulSoup
import time
c = int(40622)
a = 10
for a in range(10):
url = 'https://example.com/rockery/'+str(c)
c = int(c) + 1
print('-------------------------------------------------------------------------------------')
print(url)
print(c)
time.sleep(5)
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html, "html.parser")
name = soup.find('a', attrs={'class': 'name-hyperlink'})
name_final = name.text
name_details = soup.find('div', attrs={'class': 'post-text'})
name_details_final = name_details.text
name_taglist = soup.find('div', attrs={'class': 'post-taglist'})
name_taglist_final = name_taglist.text
name_accepted_tmp = soup.find('div', attrs={'class': 'accepted-name'})
name_accepted = name_accepted_tmp.find('div', attrs={'class': 'post-text'}) …Run Code Online (Sandbox Code Playgroud) 我正在学习python,我正在抓reddit.不知怎的,reddit已经发现我是一个机器人(我的软件实际上是),但他们怎么知道呢?我们如何欺骗他们认为我们是普通用户.
我找到了实用的解决方案,但我要求更深入的理论理解.
这是我编写的用于抓取“blablacar”网站的代码。
# -*- coding: utf-8 -*-
import scrapy
class BlablaSpider(scrapy.Spider):
name = 'blabla'
allowed_domains = ['blablacar.in']
start_urls = ['http://www.blablacar.in/ride-sharing/new-delhi/chandigarh']
def parse(self, response):
print(response.text)
Run Code Online (Sandbox Code Playgroud)
运行上述程序时,我收到错误消息
2018-06-11 00:07:05 [scrapy.extensions.telnet] 调试:Telnet 控制台监听 127.0.0.1:6023 2018-06-11 00:07:06 [scrapy.core.engine] 调试:爬行 (403) ) http://www.blablacar.in/robots.txt> (referer: None) 2018-06-11 00:07:06 [scrapy.core.engine] DEBUG: Crawled (403) http://www.blablacar .in/ride-sharing/new-delhi/chandigarh> (referer: None) 2018-06-11 00:07:06 [scrapy.spidermiddlewares.httperror] INFO:忽略响应 <403 http://www.blablacar.in /ride-sharing/new-delhi/chandigarh >: HTTP 状态代码未处理或不允许 2018-06-11 00:07:06 [scrapy.core.engine] INFO: Closing spider (finished)
我正试图在食品配送网站上为每个餐馆的网上刮取美元符号评级,但是,没有可用的xpath.
<!-- react-text: 2108 -->
"$$"
<!-- /react-text -->
Run Code Online (Sandbox Code Playgroud)
以上代码是我查看网站时用于美元评级的代码.我尝试过使用上面的直线:
<i class="icon-bullet--small">·</i>
Run Code Online (Sandbox Code Playgroud)
但是,这会输出期间,因为它不是美元评级.我也尝试过使用:
cost = ['//li[{}]/a/div[2]/p[2]/!'.format(x) for x in range(1, 999)]
Run Code Online (Sandbox Code Playgroud)
以及在xpath中使用"! - "和"react"和"react-text",但它们都不起作用.有关如何处理此问题的任何建议?
我已经在python中创建了一个脚本,以从网站中获取不同帖子的标题,并且可以完美地捕获它们。
但是,我现在希望此脚本执行的操作是记住上一次抓取的结果,以便当我运行两次时,它不会获取相同的结果。更清楚地说-脚本将在第一次执行时照常解析结果,但在找不到新帖子之前,它将在后续执行中无法获取相同的结果。
使用csv:
import csv
import requests
from bs4 import BeautifulSoup
def get_posts(url):
response = requests.get(url)
soup = BeautifulSoup(response.text,"lxml")
for item in soup.select(".summary .question-hyperlink"):
yield item.text
if __name__ == '__main__':
link = '/sf/ask/tagged/web-scraping/'
with open("output.csv","w",newline="") as f:
writer = csv.writer(f)
for item in get_posts(link):
writer.writerow([item])
print(item)
Run Code Online (Sandbox Code Playgroud)
使用数据库:
import mysql.connector
from bs4 import BeautifulSoup
import requests
url = "/sf/ask/tagged/web-scraping/"
def connect():
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd = "",
database="mydatabase"
)
return mydb
def create_table(link):
conn = connect()
mycursor …Run Code Online (Sandbox Code Playgroud) 我找到了这个链接:https : //search.roblox.com/catalog/json?Category=2&Subcategory=2&SortType=4&Direction=2
原文是:https : //www.roblox.com/catalog/?Category=2&Subcategory=2&SortType=4
我试图用 Python 抓取整个目录中所有商品的价格,但我似乎无法找到这些商品的价格。每当我转到下一页时,该 URL 都不会更改。我试过检查网站本身,但我找不到任何东西。
第一个 URL 以某种方式可抓取,我在论坛上随机找到它。用户是如何在那里获取所有这些文本数据的?
注意:我知道该网站是为儿童设计的,但我通过在那里销售限量版来赚钱。请不要做出严厉的判断。:)
web-scraping ×10
python ×7
html ×2
python-3.x ×2
bots ×1
cheerio ×1
database ×1
excel ×1
javascript ×1
linkedin ×1
meteor ×1
numpy ×1
parsing ×1
python-3.6 ×1
scrapy ×1
selenium ×1
vba ×1
web ×1
web-crawler ×1
xpath ×1